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)。。谢谢