2

最近のインタビューで、クラスが単一のクラスからのみ継承でき、複数のクラスからは継承できないという .NET の制限をバイパス/回避する方法を知っているかどうか尋ねられました。明らかに、私は答えを知りませんでした。そうでなければ、ここで質問することはありませんでした。複数のインターフェイスを実装すること (これは間違った答えのように思えました) や、あるクラスが別のクラスから継承する別のクラスを継承するクラスをチェーンする以外に、私が気付いていないこれを達成する別の方法はありますか?

4

1 に答える 1

2

複数のインターフェイスを実装する (これは間違った答えのように思えました) か、別のインターフェイスから継承する別のインターフェイスを継承するクラスをチェーンする以外に、これを達成するための別の方法はありますか?

いいえ、複数のインターフェイスを実装することが正解だと思います。

これはかなり標準的です。クラスFooとがあり、クラスが との両方から「継承」しBarたいとします。次に、インターフェイスを作成し、とを持ちます。次に、定義すると、標準の実装は次のようになりますFooBarFooBarIFooIBarFoo : 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 に答える