2

サード パーティの WSDL への .NET Web サービス リファレンスがあります。

その参照には2つのクラスがあります。基本的に、これら 2 つのクラスは、サードパーティ API 側のインターフェイスである可能性が最も高いですが、.NET では 2 つのプロキシ クラスになります。

これらの両方のクラスを 1 つのクラスに結合する必要があります。なんで?これらが分割されているのはばかげているので、メソッド呼び出しを可能にするサービスです。メソッド呼び出しはすべて、これら 2 つのプロキシ クラスの間で半分ずつ分割されます。

したがって、ThirdPartyService というカスタム ラッパー クラスを作成し、これらのプロキシ クラスの両方のメンバーを本質的に継承したいと考えています。C# で 2 つのクラスを継承できることは知っていますが、インターフェイスでこれを行う方法もわかりません。

4

2 に答える 2

5

さて、あなたは私たちに多くの作業を与えていませんが、コンポジションを使用してこれを行うことができます.

class Foo {
    public void Frobber();
}

class Bar {
    public void Blorb();
}

それで

class FooAndBar {
    Foo _foo;
    Bar _bar;
    public FooAndBar(Foo foo, Bar bar) {
        _foo = foo;
        _bar = bar;
    }

    public void Frobber() { _foo.Frobber(); }
    public void Blorb() { _bar.Blorb(); }
}

FooおよびBarインターフェイスIFooIBarそれぞれ実装する場合は、 andをFooAndBar実装することもできます。IFooIBar

デザイン パターンの言語では、これをアダプタ パターンと呼びます。

あなたの編集について:

C# で 2 つのクラスを継承できることは知っていますが、インターフェイスでこれを行う方法もわかりません。

いいえ。C# では 2 つのクラスから継承することはできません。すでに説明したように、合成を使用する必要があります。

于 2010-02-04T21:00:06.033 に答える
0

おそらくジェイソンの投稿に価値を加えるために、この種のものはアダプターとしても知られています

于 2010-02-04T21:03:07.393 に答える