C# 在运行时创建类的派生类型
我试图理解一些类似的帖子,但不太理解它们的目的,我想我会解释我自己的 我有一个类——完全由带有属性和方法的代码定义。许多方法都是虚拟的,可以由进一步的派生类重写。所以,我有如下几点C# 在运行时创建类的派生类型,c#,inheritance,dynamic,derived-class,C#,Inheritance,Dynamic,Derived Class,我试图理解一些类似的帖子,但不太理解它们的目的,我想我会解释我自己的 我有一个类——完全由带有属性和方法的代码定义。许多方法都是虚拟的,可以由进一步的派生类重写。所以,我有如下几点 Class_Main -- Class_A : Class_Main -- Class_B : Class_Main -- Class_C : Class_Main -- Class_D : Class_Main 然后我需要再定义一个可以从A-D动态派生的类。。。例如: Class_X :
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 )
因为我在类_X中有额外的属性和方法。因为C#不能从两个实际的类派生,但可以使用接口,但接口中不能有代码,只能有抽象签名,所以我应该如何进行这样的实现
谢谢从一个类扩展,并将另一个类包含在类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的所有方法。您所描述的听起来有点像。这在C#中不可用,因为它是一种静态类型语言。也许当C#4出现时,它会给你你想要的东西 如果
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_X
中(通过\u impl
对象)使用任何Class_Main
的运行时行为。您打算如何使用此范例实例化对象?这是我的想法,但不知道是否还有其他方法。。。然后我的类X的方法将执行类似于返回_impl.SomeFunction(whateverParam)。。谢谢