PCon全球产品创新大会最新日程上线,这里直达 了解详情
写点什么

在 C#和 Visual Basic 中使用 Mixin

  • 2011 年 7 月 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 年 7 月 03 日 10:421482
用户头像

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

关注

评论

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

你的项目真的适合微服务架构吗?微服务架构有哪些痛呢?(一)

我爱娃哈哈😍

微服务 后端 架构设计 架构设计实战

LeetCode刷题01-简单 两数之和

ベ布小禅

8月日更

醒酒菜:动画图解核心内存区--堆

阿Q说代码

GC 堆内存 8月日更 堆区分代 图解对象分配过程

农业第一性原理

非著名程序员

个人成长 认知提升 思维 8月日更

在网页上直接运行Win11,5秒内用AI克隆自己的声音 | 蛮三刀酱的Github周刊第二期

Zhendong

GitHub AI Windows11

微信业务架构图 & 学生管理系统

I see you

百度地图开发-搭建基础脚手架 01

Andy阿辉

android Android Studio 8月日更

模块一作业

Geek_fc100d

「架构实战营」

container 包详解

Rayjun

Go 语言

多看了几套房

escray

生活记录 8月日更

Go- 指针

HelloBug

指针 Go 语言

架构实战营 - 模块一作业

en

架构实战营

英国“蓝色”氢气计划因碳足迹高遭受重击

CECBC

Linux之yum命令

入门小站

Linux

上游思维:先天下之忧而忧

石云升

读书笔记 8月日更 上游思维

儿子教会我的态度

箭上有毒

8月日更

统计机器学习导论(一)

数据与智能

机器学习 统计

Windows Server 内存高排查

耳东@Erdong

windows 内存 Windows Server 8月日更 rammap

模块一作业

TIEDPAG

架构训练营

sql task03 复杂一点的查询

橙橙橙橙汁丶

WEB常用HTML颜色代码表

入门小站

工具

判断是否为数组的 JavaScript 方法总结

编程三昧

JavaScript 数组 8月日更

深入了解RocketMQ之客户端

邱学喆

小A数仓之路:数仓现状与解决方案

水滴

数据仓库 数据架构 8月日更 数据架构体系 数据规范

图像分类-flower_photos 实验研究

毛显新

人工智能 神经网络 tensorflow 图像处理

闲话哲科思维与软件开发

Lin

计算机 经验总结

架构实战营-模块一作业

Geek_de900a

理性创业,堵住失败的源头

boshi

创业

区块链技术在溯源服务中的应用思考

CECBC

数字人民币弯道超车领先世界,采用独创设计彻底根治区块链顽疾

CECBC

MySQL远程连接

一个大红包

8月日更

ShadowRealm 与微前端沙箱

ShadowRealm 与微前端沙箱

在C#和Visual Basic中使用Mixin-InfoQ