我试图了解一些类似的职位,但不太了解他们的目的我想我会解释我自己...

我有一个类 - 与属性和方法的代码完全定义。有许多方法虚拟到进一步派生类中被重写。所以,我有类似如下

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的所有的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top