我需要关于模拟 C# 类的多重继承的最佳方法的建议,该类需要通过动态支持进行扩展。
我有一个类 MainClass 不需要依赖于 DLR - 它的所有属性和方法都是静态编译的。它有很多重载的运算符。它是某种 DSL。
ExtendedClass 基本上是一个支持 C# 动态的 MainClass,例如,除了所有 MainClass 特性之外,它还需要重载 DynamicObject 的 TryGetMember/TryInvokeMember,因此客户端可以将它与在运行时评估的扩展属性一起使用。
DynamicObject 是一个类而不是接口的问题出现了。因此 ExtendedClass 只能从 DynamicObject 派生,这意味着它应该基本上复制所有 MainClass 功能。
我想这并不少见(两个相似的类,一个必须从某个系统类派生,因此无法通过从另一个继承来重用功能)。有没有比直接方法更聪明的方法来处理这种情况:将 MainClass 作为成员字段添加到 ExtendedClass,复制其所有方法/属性并将其简单地转发到 MainClass 的包含实例?