Eu tenho uma classe: Aque é um composto de um número de classes menores, B, Ce D.
B, C, E Dimplementar as interfaces IB, ICe, IDrespectivamente.
Uma vez que Asuporta todas as funcionalidades de B, Ce D, Aimplementa IB, ICe IDtambém, mas isso infelizmente leva a muito redirecionamento na implementação deA
Igual a:
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;}
}
}
Existe uma maneira de se livrar desse redirecionamento padrão A? B, CE Dtoda a implementar a funcionalidade diferente, mas comum, e eu gosto disso Aimplementos IB, ICe IDporque isso significa que eu posso passar em Asi como uma dependência combinando essas interfaces, e não tem que expor os métodos auxiliares internos.
Aimplementar IB, ICe IDé mais sensato escrever do Person.Walk()que Person.WalkHelper.Walk()por exemplo.