Question

J'ai un service Web .NET référence à un WSDL 3ème partie.

Dans cette référence sont 2 classes. Fondamentalement, ces 2 classes sont des interfaces les plus probables sur la 3rd Party côté API, mais finissent dans .NET comme 2 classes proxy.

J'ai besoin de combiner ces deux classes dans une seule classe. Pourquoi? Parce qu'il est stupide que ceux-ci sont divisés, ils sont le service qui me permet de faire des appels de méthode. Les appels de méthode sont la moitié et la moitié répartis entre ces 2 classes proxy.

Je veux créer une classe wrapper personnalisée appelée ThirdPartyService et en quelque sorte essentiellement héritez à la fois les membres de ces classes proxy. Je sais que vous pouvez hériter 2 classes en C #, mais je ne vois pas comment faire cela avec une interface soit.

Était-ce utile?

La solution

Eh bien, vous ne nous avez pas donné beaucoup à travailler avec, mais vous pouvez le faire en utilisant la composition.

class Foo {
    public void Frobber();
}

class Bar {
    public void Blorb();
}

Ensuite

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(); }
}

Si Foo et Bar mettre en œuvre des interfaces IFoo et IBar respectivement alors vous pouvez avoir FooAndBar mettre en œuvre trop IFoo et IBar.

Dans la langue de href="http://en.wikipedia.org/wiki/Design_Patterns_(book)" Design Patterns nous appelons cela le motif adaptateur .

En ce qui concerne votre édition:

  
    

Je sais que vous pouvez hériter 2 classes en C #, mais je ne vois pas comment faire cela avec une interface soit.

  

Non. Vous ne pouvez pas hériter de deux classes en C #. Vous devez utiliser la composition comme je l'ai déjà expliqué.

Autres conseils

Peut-être ajouter certains valeur au poste de Jason, ce genre de choses serait également connu sous le nom adaptateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top