写点什么

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

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

关注

评论

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

【Vue2.x 源码学习】第二十一篇 - 依赖收集的过程分析

Brave

源码 vue2 6月日更

ONES x 知名车企 | 软硬件研发项目管理实践

万事ONES

项目管理 研发管理 ONES

在线时间戳格式化转换工具【推荐】

入门小站

工具

公安局指挥中心一体化管理系统,情指勤合成作战

JAVA面向对象(九)--继承

加百利

6月日更

降低网络AI应用开发门槛,AIOps两大部署模式来助力

华为云开发者联盟

运维 RPA 自动化 AIOPS 华为云AIOps

我是一个请求,我该何去何从

华为云开发者联盟

CSE 请求 条件 Verticle Route

Linux之rm命令

入门小站

Linux

深入了解Spring之事件机制

邱学喆

观察者模式 spring的事件机制 EventListener注解

打造一个通用、可配置、多句柄的数据上报 SDK

魅影

sqlite 数据库 APM 多线程 数据上报

校友会小程序开发笔记九: 校友群助手功能模块设计与实现

CC同学

校友会小程序 同学录小程序

校友会小程序开发笔记十一: 后台管理系统功能设计与实现

CC同学

校友录小程序 同学录小程序

spring boot 自动装配原理详解

公众号:程序猿成神之路

Spring Boot

浪潮云说丨构建实时监控能力,提升应用质效

云计算

我的小程序开源啦~

悟空聊架构

小程序 刷题 SpringCloud passjava 6月日更

PornNet:色情视频内容识别网络

百度Geek说

云计算 大数据 后端 图像识别

EasyRecovery---视频文件恢复技巧

淋雨

数据恢复 EasyRecovery 文件恢复 免费恢复软件 硬盘数据恢复

校友会小程序开发笔记十: 校友资讯功能模块设计与实现

CC同学

校友录小程序 同学录小程序

react源码解析17.context

全栈潇晨

React

技术生态两手抓,打造面向未来的企业级领先数据库

华为云开发者联盟

数据库 开源 云原生 华为云 GaussDB

都有哪些较好用的项目管理软件?

万事ONES

项目管理 研发管理 ONES 研发工具

从Linux零基础小白到Linux云计算架构师的成长之路!

学神来啦

Linux 运维 运维自动化

2021年5月券商App行情刷新及交易体验评测报告

博睿数据

博睿数据 券商App 性能评测

算法:八皇后问题

看山

面试 算法 6月日更

HarmonyOS学习路之开发篇——Intent

爱吃土豆丝的打工人

HarmonyOS Ability intent 页面跳转

Python——有序字典 (OrderedDict)

在即

6月日更

喜讯 | 拍乐云荣膺「全球云计算大会“云鼎奖”」,先进技术受业界肯定

拍乐云Pano

【21-14】singularity介绍

耳东@Erdong

6月日更 singularity

App 上架包预检

魅影

ios Node 代码扫描 脚本 应用审核

十亿级流量下,我与Redis时延小突刺的战斗史

vivo互联网技术

redis Jedis 调用链 流量防控

技术部门Leader:如何平衡技术能力与项目管理能力?

万事ONES

项目管理 研发管理 技术管理 ONES

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