J'ai une classe: Aqui est un composé d'un certain nombre de classes plus petites, B, Cet D.
B, CEt Dmettre en œuvre des interfaces IB, ICet IDrespectivement.
Depuis Aprend en charge toutes les fonctionnalités de B, Cet D, Aimplémente IB, ICainsi IDque, mais cela conduit malheureusement à beaucoup de réacheminement dans la mise en œuvre deA
Ainsi:
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-t-il un moyen de se débarrasser de cette redirection de passe-partout A? B, Cet Dtous implémentent des fonctionnalités différentes mais communes, et j'aime que cela Aimplémente IB, ICet IDparce que cela signifie que je peux passer en Asoi en tant que dépendance correspondant à ces interfaces, et ne pas avoir à exposer les méthodes d'assistance internes.
Amise en œuvre IB, ICet IDc'est qu'il semble plus sensé d'écrire Person.Walk()plutôt que Person.WalkHelper.Walk(), par exemple.