阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

关注

评论

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

Logback基本使用

平凡人生

「Android高工面试之旅」疫情失业裸面失败后,深入分析

android 程序员 移动开发

阿里云EMAS发布套餐订阅云服务

移动研发平台EMAS

_Android 项目中 shape 标签的整理和思考,面试官不讲武德

android 程序员 移动开发

{Android}一行代码起飞,2021年百度Android面试真题

android 程序员 移动开发

【 FlutterUnit 食用指南】 开源篇,Android自定义View详解

android 程序员 移动开发

【- Flutter 桌面篇 -】 FlutterUnit win版闪亮登场,android入门基础

android 程序员 移动开发

【Java转Android】58,讲的太清楚了

android 程序员 移动开发

“新常态”下的Android程序员要面对哪些压力,终于有人把安卓程序员必学知识点全整理出来了

android 程序员 移动开发

「安卓高级架构师」教你一种更清晰的Android架构,android原生开发技术

android 程序员 移动开发

_ Dart 里的类型系统,android自定义控件开发入门与实战

android 程序员 移动开发

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget(1)

android 程序员 移动开发

【Java转Android】33,高级Android开发面试解答之线程篇

android 程序员 移动开发

[译]内存泄露的八种花样,快速从入门到精通

android 程序员 移动开发

“吹Kotlin协程的,可能吹错了,谈谈我认为的高级Android开发到底应该是怎样的

android 程序员 移动开发

[译]掌握Kotlin中的标准库函数_ run、with、let,搞懂开源框架设计思想真的这么重要吗

android 程序员 移动开发

【Android高级架构师系统学习文章】Android基础-Activity全方位解析

android 程序员 移动开发

【AAC 系列三】深入理解架构组件,androidjetpack视频

android 程序员 移动开发

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget

android 程序员 移动开发

【Flutter桌面篇】Flutter&Windows应用尝鲜,flutter框架缺点

android 程序员 移动开发

【Java转Android】29,真的已经讲烂了

android 程序员 移动开发

[译][2,安卓应用开发项目

android 程序员 移动开发

「大厂Android面试解析」20道面试灵魂拷问题,论程序员成长的正确姿势

android 程序员 移动开发

“阿里钉钉“Android 岗无缘二面,有幸内推进入“美团“送外

android 程序员 移动开发

【 Flutter 手势探索】我的第二本小册来了,嵌入式音视频方向

android 程序员 移动开发

【Flutter 专题】126 图解自定义两侧对齐 ACETabBar 标签导航栏

android 程序员 移动开发

{Android}面对最近的话题,kotlin库

android 程序员 移动开发

“我是培训 + 外包出来的,先收藏了

android 程序员 移动开发

【Flutter 专题】120 Flutter & 腾讯移动通讯 TPNS,腾讯Android面试

android 程序员 移动开发

“我是培训 + 外包出来的(1),flutter与android混合开发

android 程序员 移动开发

“终于懂了” 系列,android面试简历模板

android 程序员 移动开发

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