写点什么

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

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

关注

评论

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

中国程序员和外国程序员到底哪里不一样?

伤感汤姆布利柏

心大陆AI大模型再加速,获批国内首个「人工智能心理算法」国家备案!

心大陆多智能体

微服务项目搭建之技术选型

EquatorCoco

架构 微服务 云原生

文献解读-群体基因组第一期|《对BMI的影响:探究BMI的基因型-环境效应》

INSVAST

基因数据分析 生信服务 群体基因

索拉那Solana:技术与创新的融合,开启区块链新篇章

dappweb

区块链 Solana

天津企业采购云管平台需要考虑哪些?选择哪家好?

行云管家

云计算 云管平台 天津

网络安全行为可控定义以及表现内容简述

行云管家

网络安全 堡垒机 行为可控

“有温度”的心理健康AI专业咨询师,陪伴你一路成长!

心大陆多智能体

低代码与人工智能:革新智能客服系统的高效之道

天津汇柏科技有限公司

低代码 智能客服 #人工智能

百度沈抖:主力模型免费,是为了最大限度降低企业创新试错成本

Geek_2d6073

js通过时间戳以及随机数生成uuid

木偶

JavaScript

深度合作!博睿数据联合中国信通院开展公网服务质量评估工作!

博睿数据

区块链技术在供应链管理中的应用与挑战

区块链开发团队DappNetWork

智能单款计划助力品牌利润增长

第七在线

手把手教你基于华为云,实现MindSpore模型训练

华为云开发者联盟

人工智能 深度学习 华为云 华为云开发者联盟 企业号2024年5月PK榜

350种类型、10W+量级的API,企业应该怎么管?

芯盾时代

网络安全 物联网 API网关

Apifox 更新|编排模式、Markdown 编辑器升级、自动申请 SSL 证书、用户反馈问题优化

Apifox

前端 后端 Apifox API 后端程序员

推荐aeon,一个爆好用的 Python 库

高端章鱼哥

鸿蒙开发从开源进入到闭源(Harmony OS)开发主流

FinFish

HarmonyOS 鸿蒙开发 鸿蒙OS 小程序容器 混合开发

京东二面:为什么Netty要造FastThreadLocal?

王磊

倒计时 1 天!「飞天技术沙龙-CentOS 迁移替换专场」演讲亮点一览

OpenAnolis小助手

操作系统 龙蜥社区 CentOS 停服 CentOS 迁移最佳选择 Alibaba Cloud Linux

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