创建其在运行时派生类的类型
-
16-09-2019 - |
题
我试图了解一些类似的职位,但不太了解他们的目的我想我会解释我自己...
我有一个类 - 与属性和方法的代码完全定义。有许多方法虚拟到进一步派生类中被重写。所以,我有类似如下
Class_Main
-- Class_A : Class_Main
-- Class_B : Class_Main
-- Class_C : Class_Main
-- Class_D : Class_Main
我然后需要定义可从A-d被动态地导出的一个多个类...如:
Class_X : Class_A (or Class_B or Class_C or Class_D )
,因为我有附加的性质和Class_X内的方法。因为C#不能从两个实际的类派生的,但可以使用接口,但是你不能有代码的接口,只是抽象的签名,我怎么可能去这样做这样的实现。
由于
解决方案
你所描述听起来有点像鸭打字。这不是在C#中使用,因为它是一个静态类型语言。或许,当C#4恶有恶报, dynamic
会给你你在找什么。
如果Class_X
需要被“填充”以从这些类的功能,这将是共用的传递到类在实例化时:
public class Class_X {
private Class_Main _impl;
public Class_X(Class_Main impl) {
_impl = impl;
}
}
Class_X classXA = new Class_X(new Class_A());
Class_X classXB = new Class_X(new Class_B());
此时,您的Class_X
实例有权访问Class_Main
属性&方法所有派生类。此不会使Class_X
集合体,只是使您能够(通过Class_Main
对象)使用任何Class_X
的运行时行为从_impl
内。
其他提示
从一个类
扩展并包括X类内的其它类,并且只是有适配器的方法直接映射到内部的类。
所以,现在正好C#,只是原型:
class ClassA {
public void FunctionClassA(...) { ... }
public void FunctionClassB(...) { ... }
}
class ClassX : ClassB {
private ClassA classa;
public ClassX() {
classa = new ClassA();
}
public void FunctionClassA(...) { classa.FunctionClassA(...); }
}
所以,现在ClassX具有一个功能从ClassA的继承(由外观),并含有ClassB的所有的方法。
不隶属于 StackOverflow