写点什么

在 C#和 Visual Basic 中使用 Mixin

  • 2011-07-03
  • 本文字数:524 字

    阅读完需:约 2 分钟

Mixin 是对互不相关的类都有用处的一组功能。在支持多重继承的语言中 mixin 以第二基类的形式出现,而在动态强类型语言中则会被直接合并到类型中。C#和 VB 不支持这两种方式,一般通过基类来实现,从而导致类型肿胀或大量的复制粘贴。组合也不是好办法,因为被混入的方法和属性需要委托给内部对象执行。

re-mix 项目提供了另一种选择。通过运行时代码生成,简单的类能和一个或多个 mixin 类合并。这看起来像是多重继承,但实际上则是结合了对象组合与接口匹配来实现。比如说,你想要一个 mixin 来为类添加深拷贝功能。你需要创建一个 ICloneable 接口,以及一个实现该接口的 mixin 类 CloneableMixin。CloneableMixin 自动会获得一个父对象的引用,通过这个引用就可以执行克隆操作。

你可以在运行时将 CloneableMixin 混入任何类中来创建新的类。新类会继承自之前的类,并且实现了 mixin 所实现的全部接口。所有这些接口中的方法都会被委托给一个 mixin 的实例来执行。

另一个 mixin 的用法是重载基类中的行为,在这种情况下,mixin 中的方法将会在生成的类中改写原来类中的方法。

从 Stefan Wenig 和 Fabian Schmied 在 Lang.NET 的演讲中,可以学到更多关于re-mix 和mixin 的东西。

查看英文原文: Mixins for C# and Visual Basic

2011-07-03 10:422097
用户头像

发布了 63 篇内容, 共 26.3 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

手写vue-router核心原理

hellocoder2029

Vue

数据产品经理那点事儿三(合集)

松子(李博源)

大数据 深度思考 高效工作 数据产品经理

面试了一位4年Java的程序员,张口就要35K,还什么都不会...

收到请回复

Java 语言 & 开发 八股文

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

程序知音

不会还有程序员不知道跳槽季靠这1700道java面试题就能平淌大厂吧

程序知音

Java java面试 后端技术 秋招 Java面试题

LED显示屏价格与品质哪个更重要

Dylan

LED LED显示屏 led显示屏厂家

Java | this和super关键字【深入理解子类和父类的继承关系】

Fire_Shield

super this 9月月更

中心化决议管理——云端分析

字节跳动终端技术

ios 研发效能 CocoaPods 制品库 云化服务

com.alibaba.fastjson 对象转json剔除字段

六月的雨在InfoQ

问题处理 Fastjson index Elastic Search 9月月更

概述数据交换的构建策略

穿过生命散发芬芳

数据交换 9月月更

开发者有话说|成长之路

六月的雨在InfoQ

个人成长 开会 996 007 9月月更

旷世巨作!20多位架构师携手打造的“Java 面试核心宝典”限时开源

Geek_0c76c3

Java 数据库 开源 程序员 架构

字节、美团、滴滴以及蚂蚁金服Java后端面试过程

收到请回复

Java 程序员 面试 项目 语言 & 开发

2022秋招最新整理上千道Java面试攻略,近500页PDF文档

收到请回复

程序员 Java 面试 跳槽 语言 & 开发 秋招

一比一手写迷你版vue,彻底搞懂vue运行机制

hellocoder2029

JavaScript

【编程基础】利用Python实现阿姆斯特朗数的求解

迷彩

Python 9月月更 阿姆斯特朗数 水仙花数

开发者测评:相比 Harbor,我选择 ACR 的三点原因

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 ACR

5G网络行业切片SLA初探

鲸品堂

5G 网络切片

Fluid 助力阿里云 Serverless 容器极致提速

阿里巴巴云原生

阿里云 Serverless 云原生 Fluid ASK

龙湖千丁基于 ACK@Edge 的云原生智慧停车系统架构实践

阿里巴巴云原生

阿里云 Kubernetes 云原生

数据产品经理那点事儿二(合集)

松子(李博源)

大数据 深度思考 高效工作

IP地址和MAC地址都可以确定目标地址,为什么二者都在使用,舍弃一个是否可行?

阿柠xn

Mac IP 网络 协议族 9月月更

SAE 助力贵州酒店集团从容支撑贵州特产抢购

阿里巴巴中间件

阿里云 Serverless 云原生 SAE

你用对了么?对象文件网关 VS 分布式文件存储

焱融科技

云计算 分布式系统 对象存储 高性能 文件存储

NFTScan 与 Banksea Finance 在 NFT 源数据层面达成战略合作

NFT Research

区块链 NFT 合作 web3

HTTP - TLS1.3 初次解读

懒时小窝

融云x白鲸《2022社交泛娱乐出海白皮书》

融云 RongCloud

互联网 白皮书 融云

信创升级 | 秒云与人大金仓完成兼容性互认证

MIAOYUN

数据库 信创 国产数据库 信创云 容器云平台

软件开发正确打开方式:低代码+微服务

力软低代码开发平台

天猫精灵DIY--技能应用

六月的雨在InfoQ

天猫精灵 功能模型 9月月更 公共实体 语音交互

开发者有话说|一名高中生的编程之路

Loken

个人成长

在C#和Visual Basic中使用Mixin_.NET_Jonathan Allen_InfoQ精选文章