写点什么

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

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

关注

评论

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

freecplus框架,Linux平台下C/C++程序员提高开发效率的利器

C语言技术网-码农有道

自助设备系列——上下游

孙苏勇

产品 行业资讯 智能设备

Grafana+Prometheus(InfluxDB)+Jmeter使用Nginx代理搭建可视化性能测试监控平台

软测小生

Grafana Prometheus Influxdb Jmeter 性能测试

高仿瑞幸小程序 03 创建轮播图

曾伟@喵先森

小程序 微信小程序 大前端 移动

我在极客时间学习的三个月

石乐

VSCode最强助攻

页面仔小杨

编程 vscode

从全国首起暗网案件告破说起——暗网,超乎你想象

石君

网络安全 暗网 洋葱网络

嵌套文件夹复制实现

Howe

Java 文件复制

ELK 日志收集简易教程

meng

elasticsearch Logstash Kibana ELK Filebeat

快来体验 JetBrains Space EAP 版本

刘培培

DevOps JetBrains Space

使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (二)为什么要写单元测试

编程道与术

编程 编程语言 TDD 代码审查 单元测试

最新Idea 2020.1 二种方法激活教程

公众号:V5codings

intellij-idea

docker安装mysql5.7并挂载目录到本地

桥哥技术之路

Docker

NumPy 运算规则总结

张利东

Python

打造个人商业模式第一步

一尘观世界

副业赚钱 提升认知 思维方式 商业模式 认识自己

面对压力的战略和战术

山楂大卷

管理 精神力 逻辑思维 压力 工作思路

游戏开发通用技术和工具

波波

编程 游戏开发 H5游戏

2020年程序猿必读10本好书推荐

ABC实验室

学习 2020 程序员 好书推荐

我的工作原则与思考

梁帅

互联网 工作效率 原则

C语言程序的基本结构

C语言技术网-码农有道

C/C++

分析Kubernetes技术体系的层级,慎用比较前沿的技术

韩超

5G来临,我们该如何打造自己的家庭数据中心基础篇

ABC实验室

5G 数字资产 家庭数据中心

听保洁老大爷讲Java的垃圾回收

侯树成

JVM

Flutter Andorid真机或打包APK杂症记录

北风烈

flutter 打包APK

Kafka系列第5篇:一文读懂消费者背后的那点"猫腻"

z小赵

大数据 kafak 实时计算

给程序员的错误找个台阶

曲水流觞TechRill

有没有什么上古的程序代码至今依然没被更替?

极客时间

编程 程序员 开发

C语言数据类型

C语言技术网-码农有道

告别手写,一键生成 Helm Chart README

郭旭东

Kubernetes Helm

当我们说文本编辑器时,到底在说什么

付济

写作平台 InfoQ markdown

我的编程之路-2(首秀)

顿晓

方法 沟通 新项目

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