写点什么

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

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

关注

评论

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

在 Amazon EMR 上构建实时数据湖

亚马逊云科技 (Amazon Web Services)

Amazon EMR

一个写了3年半flutter的小伙,突然写了2个月uniapp的感悟!

编程的平行世界

uni-app Vue 前端 Flutter Android Apk

项目管理的成功秘诀:架构评审的力量

乐思项目管理

架构评审 #项目管理

使用APP源码搭建直播网站难不难

山东布谷网络科技

APP开发 直播APP源码

代码随想录Day29 - 回溯(五)

jjn0703

代码随想录Day30 - 回溯(六)

jjn0703

慎思笃行,兴业致远:金融行业的数据之道

脑极体

金融数据

代码随想录Day31 - 贪心算法(一)

jjn0703

MedicalGPT:基于LLaMA-13B的中英医疗问答模型(LoRA)

汀丶人工智能

人工智能 自然语言处理 LoRa llama LLM模型

Dify.AI 用户直面会:Dify 产品规划与 LLM 应用落地常见问题

Dify

开源 AI开发软件 LLMOps

JVM类加载器子系统ClassLoader

java易二三

编程 程序员 计算机

项目管理中的测试:确保项目成功的关键环节

乐思项目管理

项目管理 软件测试

死磕Java八股成功拿下Offer,结果背调没过...

程序员小毕

程序员 面试 高并发 架构师 java面试

项目管理中的代码评审:一种有效的实施策略和常见问题解析

乐思项目管理

代码评审 #项目管理

代码随想录Day32 - 贪心算法(二)

jjn0703

如何在几分钟内创建一个带有业务数据的官网 AI 智能客服?

Dify

开源 AI开发 LLMOps

JVM 调优神器 arthas

java易二三

编程 计算机 Arthas

Java Stream 源码分析

java易二三

Java 编程 计算机

致敬图灵!HashData拥抱数据智能新时代!

酷克数据HashData

想学Python高级编程?必须了解这个小技巧:match-case!

程序员晚枫

Python

使用Keepalived实现Nginx的自动重启及双主热备高可用

java易二三

编程 程序员 计算机

彻底学透分布式事务看这篇笔记就够了!

小小怪下士

Java 程序员 分布式 分布式事务

2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。

福大大架构师每日一题

福大大架构师每日一题

C++中互斥锁的使用

芯动大师

Dify.AI 接入 Claude2 模型:支持 100K token 上下文,登录即免费获得 1000 次消息额度

Dify

开源 更新 LLMOps

Nginx的高可用

java易二三

编程 程序员 计算机

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