Ich bin neu in StructureMap und habe einige vorhandenen Code, mit denen ich arbeite, die StructureMap 2.5.4 verwendet.StructureMap und IEnumerable injizieren <T>
Es gibt eine Klasse, die mit Hilfe von StructureMap erstellt wird und einen Konstruktor hat, der IEnumerable<ICar>
als Parameter akzeptiert.
Die Registrierung hat den folgenden Code.
Scan(x =>
{
x.TheCallingAssembly();
x.WithDefaultConventions();
x.AddAllTypesOf<ICar>();
}
);
ForRequestedType<IEnumerable<ICar>>().TheDefault.Is.ConstructedBy(
x => ObjectFactory.GetAllInstances<ICar>());
Ich schreibe ein Gerät zu testen und haben eine geschachtelte Behälter aus dem Object erhalten und haben eine Instanz mit dem Einspritzverfahren eingespritzt. Eine der Instanzen von ICar sollte den injizierten Typ in seinem Konstruktor erhalten. Es funktionierte jedoch nicht und ich verfolgte das bis zum ObjectFactory.GetAllInstances() - Aufruf, der meinen verschachtelten Container nicht verwendet.
Wie kann ich das zum Funktionieren bringen?
Ich las auch über StructureMap Autowiring-Arrays und IEnumerable-Instanzen, aber ich konnte es nicht zum Laufen bringen.
Gibt es eine bessere Möglichkeit, den obigen Registrierungscode neu zu schreiben, so dass eine Instanz von IEnumerable<ICar>
erstellt wird und den injizierten Typ aus meinem verschachtelten Container verwenden?
An einigen Stellen verwenden Sie "TCar" und andere verwenden Sie "ICar". Was ist ihre Beziehung (und weiß StructureMap über ihre Beziehung)? –
Sorry, sie sind das gleiche .. Tippfehler. – GiddyUpHorsey