2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

六一特辑丨8岁小程序员献礼儿童节:我DIY了聊天机器人,做3D printer,还想和外星人对话!

华为云开发者联盟

编程 程序员 开发者 代码 机器人

鸿蒙操作系统发布在即 万物互联时代将给开发者带来更多机遇

科技汇

开发人员应该害怕低代码吗?

禅道项目管理

程序员 低代码 开发 低代码平台

高并发存储优化篇:诸多策略,缓存为王

Coder的技术之路

缓存 缓存击穿 缓存雪崩 缓存架构

震惊,PostGIS还可以这样用!!!

华为云开发者联盟

数据库 分布式 GaussDB 地理数据库 PostGIS

QCon 演讲实录 | 大型软件团队的数字化项目管理实践

万事ONES

研发管理 团队协作 数字化 ONES Qcon

华云大咖说 | 华云数据助力高校建设实训室平台

华云数据

架构实战-模块5作业

大师兄

一文带你搞懂RPC到底是个啥

万俊峰Kevin

c++ 微服务 RPC RPC 协议实现原理 srp

react源码解析1.开篇介绍和面试题

全栈潇晨

React React Hooks react源码

JWT(auth0):RS256非对称加密算法实现Token的签发、验证

西门阿杰

Java Token RS256

Spring 实例化方式有几种?为什么会用到 Cglib?

小傅哥

Java spring 小傅哥 cglib 手写框架

和12岁小同志搞创客开发:如何选择合适的传感器?

不脱发的程序猿

DIY 传感器 创客开发 如何选择合适的传感器?

SphereEx 获数百万美元天使融资,接力 ShardingSphere 开启 Database Plus 新篇章

SphereEx

Java 面试基础:Java 语言的特点

三掌柜

5月日更

带你看懂MySQL执行计划

Simon

MySQL 执行计划

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

🔎【Java 源码探索】深入浅出的分析Mutex底层源码

码界西柚

Java JVM mutex Condition 5月日更

长连接网关技术专题(五):喜马拉雅自研亿级API网关技术实践

JackJiang

Netty nio 网关

设计微博系统中”微博评论“的高性能高可用计算架构

9527

从一个HTTP请求来看网络分层原理

IT视界

计算机网络 网络协议 HTTP 网络层

软件研发中的错误假设

赫杰辉

设计 低代码 研发工具 x-series

重庆区块链公共服务平台—“渝快链”2.0正式发布

带你读论文丨异常检测算法及发展趋势分析

华为云开发者联盟

深度学习 异常检测算法 深度异常检测算法 深度半监督 群体异常检测

知乎的一次29.7元的咨询

why技术

Java 程序员

阿里面试题:MySQL 磁盘满了,怎么办?

Java架构师迁哥

初探可编程网关 Pipy

张晓辉

代理 网关 服务网格

走近设计模式:写代码一定要用设计模式吗?

华为云开发者联盟

设计模式 代码 软件设计 面向对象软件 GoF设计模式

6月日更,优质更文,“定制”来袭~

InfoQ写作社区官方

6月日更 热门活动

千亿级数据迁移mongodb成本节省及性能优化实践

gmoy-tencent

MySQL 数据库 mongodb 架构 分布式数据库mongodb

OpenResty入门

捉虫大师

nginx openresty

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