写点什么

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

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

关注

评论

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

加速数字化转型,天翼云携手央国企积蓄发展新动能

天翼云开发者社区

大数据培训课程哪家比较好

小谷哥

架构实战 - 模块 7 作业

mm

架构实战营 异地多活

视觉大模型训练和推理加速

百度Geek说

人工智能 深度学习 transform 企业号 1 月 PK 榜

北京有哪些java培训中心

小谷哥

重新思考边缘负载均衡

俞凡

架构 netflix 大厂实践

“天翼云杯”决赛收官!看看你pick的队伍战绩如何?

天翼云开发者社区

如何减少网站卡顿的代码级别详细文章

Yestodorrow

MySQL:删除一张表中的前10万行数据,哪种方式效率更高?

程序员拾山

MySQL

软件测试/测试开发丨免安装免配置环境的免费 ios 调试工具 sib 来啦

测试人

软件测试 自动化测试 测试开发 ios测试

数据可视化图表系列解析——雷达图

Data 探险实验室

数据分析 可视化 数据可视化 图表 可视化数据

软件测试/测试开发 | 接口测试中,请求超时该怎么办?

测试人

软件测试 自动化测试 接口测试 测试开发

架构实战 - 模块 8 作业

mm

消息队列 架构实战营

明道云零代码应用治理分层分级指南与量表

明道云

到底卡在了哪里,2023年再撒谎网慢就说不过去了

Yestodorrow

架构 可观测性 网站性能

扪心自问,我们在用户旅程的投入有多匮乏?

Yestodorrow

百度百舸 · AI 异构计算平台,加速自动驾驶模型迭代

百度Geek说

人工智能 自动驾驶 企业号 1 月 PK 榜

架构5作业

梁山伯

mathtype有免费的吗?如下下载最新版本

茶色酒

MathType2023

音乐制作软件FL Studio21中文绿色版下载

茶色酒

FL Studio 21

再获认可!天翼云荣获“行业应用实践优秀合作伙伴”授牌

天翼云开发者社区

多活数据中心链路智能调度场景

智维数据

数据中心 DNS 智能运维 应用交付平台 可视化数据

将混沌实验内建到持续交付过程中提升系统稳定性

QE_LAB

混沌工程 混沌测试 测试技术

BSN祝全体技术工作者新春快乐!

BSN研习社

培训学习前端开发技术好吗?

小谷哥

丢掉丑陋的 toast,会动的 toast 更有趣!

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

高效学 C++|函数参数的引用传递和函数重载

TiAmo

c++ 编程语言、

厉害了!天翼云位列中国医疗云基础设施服务市场榜首

天翼云开发者社区

零代码应用搭建规范建议

明道云

MySQL幻读到底是什么?怎么解决?

程序员拾山

MySQL

第五周作业-微博评论高性能高可用的计算架构

不爱学习的程序猿

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