2

我最近在一次采访中被问到是否知道有一种方法可以绕过/规避 .NET 限制,即类只能从单个类继承,而不能从多个类继承。显然我不知道答案,否则我不会在这里问这个问题。缺少实现多个接口(这似乎是一个错误的答案)或将类链接到一个继承自另一个继承自另一个的类,还有另一种我不知道的方法来完成这个吗?

4

1 回答 1

2

缺少实现多个接口(这似乎是一个错误的答案)或将类链接到一个继承自另一个继承自另一个的类,还有另一种我不知道的方法来完成这个吗?

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

这是相当标准的。假设您有课程FooBar并且您希望课程从和FooBar中“继承” 。然后你创建接口and和 have and 。然后你会定义和标准实现将是FooBarIFooIBarFoo : IFooBar : IBarFooBar : 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# 中有一些工具可以帮助加快速度)。

于 2013-08-04T15:24:11.423 回答