写点什么

在 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:421857
用户头像

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

关注

评论

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

开发体育直播平台:探索数据分析模块展示的关键内容

软件开发-梦幻运营部

ETHFI空投指南,轻松获取收益!以bitget钱包为例

股市老人

蓝易云 - python教程:转义字符

百度搜索:蓝易云

云计算 Linux 服务器 云服务器 高防服务器

云手机海外版可以用来运营TikTok吗?

Ogcloud

云手机 海外云手机 tiktok云手机 tiktok运营 云手机推荐

第54期|GPTSecurity周报

云起无垠

蓝易云 - 租用香港主机也有讲究?

百度搜索:蓝易云

云计算 服务器 云主机 云服务器 高防服务器

蓝易云 - Java注解与python函数修饰器区别是啥

百度搜索:蓝易云

Java Python 云计算 编程 云访问

蓝易云 - sql order by排序null值放最后,怎么写

百度搜索:蓝易云

Python sql 服务器 云服务器 免备案服务器

香港 Web3 的分岔路口:to 创新 or to 监管,这并不是一个问题

TechubNews

3CX的介绍

cts喜友科技

通信 通讯 云通讯

安全通告:NGINX HTTP/3 QUIC 漏洞

NGINX开源社区

dos nginx 开源版 NGINX PLUS HTTP/3 QUIC CVE 漏洞

新三顾茅庐:大型政企为何选择「混合云」!

白洞计划

云计算

总交易量突破 3000 亿美元,APX Finance 成本轮牛市最大的黑马?

股市老人

文献解读-肿瘤测序-第五期|《局部晚期或转移性儿童及青少年分化型甲状腺癌的基因特征与临床特征及131I疗效的关系》

INSVAST

基因数据分析 生信服务 肿瘤测序

昆仑万维:棋先一步,我们不卖API,只卖大模型产品化

新消费日报

开发管理指南:构建高效团队的七大板块

凌晞

团队管理 开发管理

比特币Runes协议和brc20的区别分析,以bitget钱包为例

股市老人

量子计算:区块链安全的下一个重大威胁?

区块链开发团队DappNetWork

转型的突破性工具:低代码开发工具

快乐非自愿限量之名

低代码 数字化 企业转型

在CentOS 7.5上安装kubectl

vinci321

centos kubectl

Redis是如何做内存回收的

小曾同学.com

redis redis 底层原理 Redis内存回收 Redis内存淘汰策略

蓝易云 - python教程:可变参数*args 和 **kwargs详解

百度搜索:蓝易云

Python 云计算 Linux 运维 云服务器

连续五次登顶 天翼云再次位居中国专属云服务市场第一

Geek_2d6073

企业数字化转型:低代码开发平台模式探索与实践

不在线第一只蜗牛

低代码 数字化 数字转型

Databend 开源周报第 147 期

Databend

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