写点什么

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

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

关注

评论

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

AIGC 浪潮下,鹅厂新一代前端人的真实工作感受

CODING DevOps

可视化数据分析工具是什么?可以用来做什么?

巷子

【我和openGauss的故事】在Kylin桌面版操作系统中配置openGauss的ODBC数据源

daydayup

go-zero 是如何实现令牌桶限流的?

AlwaysBeta

Go 源码 微服务 go-zero 限流器

2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数,

福大大架构师每日一题

左程云 福大大架构师每日一题

C++友元函数和友元类的使用

芯动大师

c++ 友元

【我和openGauss的故事】原生openGauss与Oracle数据库函数兼容性对比验证测试

daydayup

作为网络报表分析工具的Quick BI,其功能如何

夜雨微澜

ARTS 打卡第 1 周 鸿蒙入门开发教程:一文带你详解工具箱元服务的开发流程

坚果

ARTS 打卡计划 HarmonyOS OpenHarmony 元服务 ArkTS

【我和openGauss的故事】一文帮你理解openGauss的高可用方案

daydayup

【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试

daydayup

javascript之webAPIs(1)

timerring

JavaScript

新利好带动 POSE 持续上扬,月内几近翻倍

BlockChain先知

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性

daydayup

新利好带动 POSE 持续上扬,月内几近翻倍

鳄鱼视界

openGauss数据库源码解析系列文章——安全管理源码解析(三)

daydayup

【Linux】云服务器自动化部署VuePress博客(Jenkins)

ReturnTmp

jenkins vuepress

Spring 架构

小万哥

Java spring 后端 springboot SpringCloud

【我和openGauss的故事】Navicat连接openGauss_5.0.0 企业版数据库

daydayup

【NodeJS】GLIBC_2.28 not found CentOS7不兼容Node高版本

ReturnTmp

node.js centos

怎么快速更新Python的第三方库?教你一招,小白也能学会

程序员晚枫

Python 编程 计算机 第三方库

以商业大数据技术助力数据合规流通体系建立,合合信息参编《数据经纪从业人员评价规范

合合技术团队

人工智能 大数据 商业化

通义千问开源模型部署使用

WizInfo

通义千问

【我和openGauss的故事】openGauss5.0在某省医保局实时数仓应用

daydayup

openGauss数据库源码解析系列文章——安全管理源码解析(四)

daydayup

ToolLLM:能够使用 16000 种真实 API 的 LLM

Zilliz

AIGC Towhee LLM

从推动到拉动:研发效能提升的第一性原理

CODING DevOps

中国信通院高质量数字化转型产品及服务全景图发布,合合信息多项AI产品入选

合合技术团队

人工智能 数字化转型

openGauss-graph 0.2.0版本正式上线

daydayup

新利好带动 POSE 持续上扬,月内几近翻倍

股市老人

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