有没有办法绕过/绕过C#.NET中的单类继承限制?

时间:2013-08-04 15:17:03

标签: .net oop inheritance

我最近在一次采访中被问到,如果我知道一种绕过/绕过.NET限制的方法,那么类只能从一个类继承,而不能从多个类继承。显然我不知道答案,否则我不会在这里问这个问题。如果没有实现多个接口(这看起来像是一个错误的答案)或将类链接到一个继承自另一个继承自另一个接口的类,那还有另一种方法可以实现这个我不知道的吗?

1 个答案:

答案 0 :(得分:2)

  

如果没有实现多个接口(这看起来像是一个错误的答案)或将类链接到一个继承自另一个继承自另一个接口的类,那还有另一种方法可以实现这个我不知道的吗?

不,我怀疑实现多个接口是正确的答案。

这是相当标准的。假设您有课程FooBar,并希望课程FooBarFooBar“继承”。然后,您创建接口IFooIBar,并拥有Foo : IFooBar : IBar。然后你定义FooBar : IFoo, IBar,标准实现将是

class FooBar : IFoo, IBar {
    private readonly IFoo foo = new Foo();
    private readonly IBar bar = new Bar();
    // or pass these in as dependencies

    public void Moo() {
        foo.Moo();
    }

    public void Mar() {
         bar.Mar();
    }
}

是的, 可以进行大量的写作,但 不是很难(VS或R#中有工具可以帮助加速位)。