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

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

关注

评论

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

阿里内部人手一份的Spring Cloud Alibaba手册

小小怪下士

Java 程序员 SpringCloud springcloudAlibaba

精进:如何跳出疯狂的忙碌

老张

个人提升 如何解决问题 思维逻辑

限流功能实现原理

互联网架构师小马

MegaOS重磅亮相新华三领航者峰会,助推百行百业全数字化

新消费日报

轻骑逐单于,大雪满弓刀:华为分布式存储的一骑绝尘

脑极体

存储

关于验收标准,你需要知道的一切(译)

Bruce Talk

Scrum 敏捷

pytorch实现前馈神经网络实验(手动实现)

Studying_swz

6 月 优质更文活动

Sentinel的整体工作流程分析

互联网架构师小马

微服务高并发:流量效果控制,经典限流算法

互联网架构师小马

Nautilus Chain全球行分享会,上海站圆满举办

股市老人

Solaris网络从9家知名投资机构获得5000万美元融资

股市老人

【零售电商系列】走进亚马逊(三)

小诚信驿站

6 月 优质更文活动

Redis数据结构:高频面试题及解析

小万哥

nosql redis 面试 后端 中间件

kubernetes 必知必会 1 - 初识

itschenxiang

android项目问题总结

Studying_swz

6 月 优质更文活动

Java SPI 在 Sentinel 中是如何应用的?

互联网架构师小马

Java sentinel spi

Nautilus Chain全球行分享会,上海站圆满举办

BlockChain先知

2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络中,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一个节点 j。

福大大架构师每日一题

Go rust 福大大架构师每日一题

虚拟机安装Ubuntu16并安装Ros(Kinetic)

Studying_swz

6 月 优质更文活动

ChatGPT教我用200行代码写一个简版Vue框架 - OpenTiny

Kagol

vue.js 前端 ChatGPT

Sentinel 是如何实现资源指标数据统计的

互联网架构师小马

Java sentinel

H5 单双引号问题

Andy

责任链模式在 Sentinel 中的应用

互联网架构师小马

INFINI Labs 产品更新 | Easysearch 新增跨集群复制 (CCR)、支持快照生命周期管理 (SLM) 功能等

极限实验室

搜索引擎 console Gateway agent easysearch

一个屋子里必须要有多少人,才能让某人和你生日相同的概率至少为1/2? 必须要有多少人,才能让至少两个人生日为 7月 4 日的概率大于 1/2?

福大大架构师每日一题

ChatGPT 福大大架构师每日一题

Nautilus Chain全球行分享会,上海站圆满举办

鳄鱼视界

【坚果派】Flutter环境配置(Mac版)

坚果

flutter 坚果派 6 月 优质更文活动

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