Joignez-vous à 2 classes - essentiellement
-
18-09-2019 - |
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.
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