I have a class: A
that is a composite of a number of smaller classes, B
, C
and D
.
B
, C
, and D
implement interfaces IB
, IC
, and ID
respectively.
Since A
supports all the functionality of B
, C
and D
, A
implements IB
, IC
and ID
as well, but this unfortunately leads to a lot of re-routing in the implementation of A
Like so:
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;}
}
}
Is there a way to get rid of any of this boilerplate redirection in A
? B
, C
and D
all implement different but common functionality, and I like that A
implements IB
, IC
and ID
because it means I can pass in A
itself as a dependency matching those interfaces, and don't have to expose the inner helper methods.
A
implementIB
,IC
andID
is it feels more sensible to writePerson.Walk()
as opposed toPerson.WalkHelper.Walk()
, for example.