Unirse a las clases 2 - esencialmente
-
18-09-2019 - |
Pregunta
Tengo una referencia de servicio Web .NET a una tercera parte de WSDL.
En esa referencia son 2 clases. Básicamente estas 2 clases son más probables Interfaces en el lado de la API tercera Parte, pero en .NET terminar como 2 clases de proxy.
Tengo una necesidad de combinar estas dos clases en una clase. ¿Por qué? Debido a que es estúpido que éstas se dividen, que son el servicio que me permite hacer llamadas a métodos. Las llamadas a métodos son todos medio dividida y medio entre estas 2 clases de proxy.
Así que quiero crear una clase contenedora personalizada llamada ThirdPartyService y de alguna manera esencialmente heredar ambos miembros de la clase los proxy. Sé que se puede heredar 2 clases en C #, pero no veo cómo hacer esto con una interfaz bien.
Solución
Bueno, no nos has dado mucho que trabajar, pero que podría ser el uso de esta composición.
class Foo {
public void Frobber();
}
class Bar {
public void Blorb();
}
Entonces
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
y Bar
implementan las interfaces IFoo
y IBar
respectivamente, entonces puede tener FooAndBar
aplicar IFoo
y IBar
también.
En el lenguaje de href="http://en.wikipedia.org/wiki/Design_Patterns_(book)" nos llaman a esto el adapter .
En cuanto a su edición:
Sé que puede heredar 2 clases en C #, pero no veo cómo hacer esto con una interfaz bien.
No. No se puede heredar de dos clases en C #. Usted tiene que utilizar la composición como ya he explicado.
Otros consejos
Tal vez añadir algunos valor al mensaje de Jason, este tipo de cosas sería también conocido como adaptador