Diese Frage bezieht sich auf IoC im Allgemeinen, aber ich verwende Autofac, also wäre eine Autofac-Lösung großartig.
Nehmen Sie also die folgenden Klassen an:
class A
{
IEnumerable<B> GetBs();
}
class B
{
// Some code
}
class C
{
readonly IEnumerable<B> bs;
C(IEnumerable<B> bs)
{
this.bs = bs;
}
}
class Program
{
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.Register<A>();
builder.Register<C>();
var container = builder.Build();
var c = container.Resolve<C>();
// do something with c
}
}
die oben genannten Main
wird scheitern.
Ich habe festgestellt, dass ich dieses Problem durch Hinzufügen dieser Codezeile lösen kann:
builder.Register(c => c.Resolve<A>().GetBs())
Das fühlt sich aber nicht richtig an. Gibt es eine andere Möglichkeit, dies zu erreichen? Oder Änderungen am Design?