Tengo una clase: Aes un compuesto de varias clases más pequeñas B, Cy D.
B, CY Dponer en práctica las interfaces IB, ICy IDrespectivamente.
Dado que Aadmite toda la funcionalidad de B, Ce D, Aimplementa IB, ICy IDtambién, pero desafortunadamente esto lleva a una gran cantidad de cambios de ruta en la implementación deA
Al igual que:
interface IB
{
int Foo {get;}
}
public class B : IB
{
public int Foo {get {return 5;}}
}
interface IC
{
void Bar();
}
public class C : IC
{
public void Bar()
{
}
}
interface ID
{
string Bash{get; set;}
}
public class D: ID
{
public string Bash {get;set;}
}
class A : IB, IC, ID
{
private B b = new B();
private C c = new C();
private D d = new D();
public int Foo {get {return b.Foo}}
public A(string bash)
{
Bash = bash;
}
public void Bar()
{
c.Bar();
}
public string Bash
{
get {return d.Bash;}
set {d.Bash = value;}
}
}
¿Hay alguna manera de deshacerse de esta redirección repetitiva A? B, Cy Dtodos implementan funcionalidades diferentes pero comunes, y me gusta que Aimplemente IB, ICy IDporque significa que puedo pasar por Así mismo como una dependencia que coincide con esas interfaces, y no tengo que exponer los métodos auxiliares internos.
Aimplementar IB, ICy IDes que es más sensato escribir Person.Walk()en lugar de Person.WalkHelper.Walk(), por ejemplo.