如何在C#中模拟多重继承

Del*_*lta 9 c# inheritance class multiple-inheritance

我怎样才能做到这一点:

Class A : DependencyObject {}

Class B : DependencyObject {}

Class C : A , B {}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ott 32

C#没有多重继承,所以行

Class C : A , B {}
Run Code Online (Sandbox Code Playgroud)

永远不会工作.你可以用接口做类似的事情

interface InterfaceA { void doA(); } 
class A : InterfaceA { public void doA() {} }

interface InterfaceB { void doB(); }
class B : InterfaceB { public void doB() {}}

class C : InterfaceA, InterfaceB
{
  m_A = new A();
  m_B = new B();

  public void doA() { m_A.doA(); }
  public void doB() { m_B.doB(); } 
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*ndy 7

您不能在C#中进行多重继承,但可以实现多个接口:

  1. 使用与A的公共成员相同的方法创建接口
  2. 使用与B的公共成员相同的方法创建接口
  3. 在C内部为A和B创建成员变量.
  4. 从A和C实现A接口(C的实现只调用其类型A的成员变量)
  5. 从B和C实现B接口(C的实现只调用其类型B的成员变量)

  • 或者你可以使用构图并开辟自己的踪迹.:) (4认同)