写点什么

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

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

关注

评论

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

麒麟云容器运行时优化之容器创建优化

麒麟云

Kubernetes 容器云 银河麒麟 云原生操作系统 容器运行时

PCB反复评审难题,终极解决办法有了?

华秋PCB

工具 PCB PCB设计 布线 器件选型

创新 = 颠覆?AI创新如何做大蛋糕

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 7 月 PK 榜

用友BIP:企业数智化与信创化的完美结合

用友BIP

国产替代

如何避免在C#中出现混乱代码

互联网工科生

代码 代码编写

NFTScan 正式上线 Linea NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\ NFTScan Linea

国外虚拟主机为您提供高性能与稳定性的完美结合!

一只扑棱蛾子

虚拟主机 国外虚拟主机

借助 Kubernetes 三步开启云原生之旅

NGINX开源社区

nginx NGINX Ingress Controller NGINX Kubernetes Gateway

软件测试/测试开发丨接口测试之Postman 安装与使用

测试人

Python 程序员 软件测试 Postman 接口测试

全域Serverless化,华为云引领下一代云计算新范式

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

看大国重器用友BIP如何扛起中国企业数智化转型的使命担当

用友BIP

国产替代

中企出海,强大数智底座助力提升多维组织能力

用友BIP

数智底座 中企出海

企业数智化国产替代,用友BIP的四大优势

用友BIP

国产替代

GaussDB技术解读丨高级压缩

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

软件测试/测试开发丨学习笔记之 Python 函数

测试人

Python 程序员 软件测试 函数

如何快速理解复杂业务,系统思考问题?

阿里技术

理解业务 系统思考

装备制造行业人力资源数智化挑战,你遇到了几条?

用友BIP

人力资源 制造

上海市静安区财政局领导带队调研合合信息,政企共话科技创新

合合技术团队

文字识别 合合信息 商业大数据

情景规划与财务建模,运行全面预算管理的新机制

智达方通

智达方通 全面预算管理 企业财务计划与分析 财务建模

铜锁 SM2 算法性能优化实践(一)|综述

铜锁开源密码库

密码学 隐私保护 数据安全 密码学和算法 国密

OpenCloudOS开源社区产品完成阿里云PolarDB数据库开源产品兼容适配

阿里云数据库开源

polarDB PolarDB-X PolarDB for PostgreSQL 阿里云PolarDB

Oracle数据库知识图谱正式发布,一起搭建知识体系完善知识架构

墨天轮

MySQL 数据库 oracle postgresql 数据库优化

Flink CDC & MongoDB 联合实时数仓的探索实践

Apache Flink

大数据 flink 实时计算

Flink 遇见 Apache Celeborn:统一的数据 Shuffle 服务

Apache Flink

大数据 flink 实时计算

Python案例分析|使用Python图像处理库Pillow处理图像文件

TiAmo

Python 数据分析 图像操作

标准化,企业财务共享中心的灵魂内核(上)——建设路径避雷指南

用友BIP

财务共享

微服务部署架起App开发运维的高速通道

Onegun

微服务 部署与维护 部署架构

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