我需要为模拟C#类的多继承的最佳方式提供建议,该类需要通过支持动态进行扩展。在扩展另一个类的类上实现DynamicObject功能
我有一个类MainClass不需要依赖于DLR - 它的所有属性和方法都是静态编译的。它有大量的重载操作符。它是某种DSL。
ExtendedClass基本上是一个支持C#动态的MainClass,除了所有需要重载DynamicObject的TryGetMember/TryInvokeMember的MainClass功能外,客户端还可以在运行时对扩展属性进行评估。
这里有一个DynamicObject是一个类的问题,而不是一个接口。所以ExtendedClass只能从DynamicObject派生,这意味着它应该基本上复制所有的MainClass功能。我猜这种情况并不少见(两个类似的类,一个必须从某个系统类派生,因此不可能通过继承另一个系统来重用功能)。有没有比直接的方法更聪明的方式来处理这种情况:将MainClass作为成员字段添加到ExtendedClass,复制其所有方法/属性并简单地将其转发给MainClass的包含实例?
但我现在看着IDynamicMetaObjectProvider,它不会解决这个问题吗?根据文档,当我可以将动态添加到从另一个类继承的类时,这是确切的情况。 –
这是,但它是很多工作。如果你想走这条路,我会对结果非常感兴趣。 – jbtule
现在看看它。我的表情并不那么复杂,希望它不会那么难。但我认为这需要时间。 –