NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

【获奖名单公示】仅需发布3篇+文章,极客时间每日一课 VIP 等多重礼品,免费拿~

InfoQ写作社区官方

写作平台 征稿 热门活动

单体架构知识点及单体架构的缺陷

奈学教育

单体架构

十代酷睿凌云!开启游戏本新篇章的机械师“战空”F117-V

最新动态

架构师训练营第五周总结

架构师 极客大学架构师训练营

第五周作业 一致性hash算法

魔曦

极客大学架构师训练营

架构师训练营 - 第⑤周总结

牛牛

学习 极客大学架构师训练营

作业一:一致性hash实现

孙强

Istio 升级新方式:金丝雀升级

郭旭东

Kubernetes 云原生 istio

Lesson 5 分布式系统架构- 分布式缓存和队列 心得笔记

edd

分布式事务精华总结篇

奈学教育

分布式 分布式事务

第五周作业总结

Thrine

缓存技术和直播平台缓存总结

周冬辉

分布式事务精华总结篇

古月木易

分布式 分布式事务

一致性哈希实现

elfkingw

极客大学架构师训练营

消息队列与异步架构

Lane

极客大学架构师训练营

一致性hash算法java代码实现

Thrine

大型网站技术架构--架构篇

wei

第五周作业 小结

姜 某某

图解:如何理解与实现散列表

淡蓝色

Java 数据结构 算法

半小时,将你的Spark SQL模型变为在线服务

范式AI云

Python spark Sparksql Apache Spark 数据模型

架构0期Week5Work1

Nan Jiang

图解:什么是“图”?

淡蓝色

Java 数据结构 算法

啃碎并发(六):Java线程同步与实现

猿灯塔

Week 05 总结

鱼_XueTr

缓存 分布式数据库 消息队列

架构师训练营第5周总结:缓存,消息队列,负载均衡,分布式数据库

hifly

负载均衡 缓存 分布式数据库 极客大学架构师训练营 消息队列

一致性Hash

梅子黄时雨

极客大学架构师训练营

架构师训练营第五周学习总结

whiter

极客大学架构师训练营

单体架构知识点及单体架构的缺陷

古月木易

单体架构

架构师训练营第五周命题作业

whiter

极客大学架构师训练营

实现一致性 hash 算法

戴维斯

极客大学架构师训练营

架构师训练营第五周总结

王鑫龙

极客大学架构师训练营

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