BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

在C#和Visual Basic中使用Mixin

| 作者 Jonathan Allen 关注 595 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2011年7月4日. 估计阅读时间: 1 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT