Einfache Injektor: Registrierung einen Typ mit Konstruktor-argument, basiert auf der übergeordneten
Ich bin derzeit in den Prozess der Beseitigung von Ninject von meinem Projekt, und bewegen auf Einfache Injektor-aber es ist eine Sache, die ich kann nicht richtig arbeiten.
Für meine Anmeldung, bei der Registrierung von Diensten, ich war zuvor in der Lage, einen parameter übergeben, in meinen logging-Klasse, die als solche
_kernel.Bind<ILogger>().To<Logger>()
.WithConstructorArgument("name",
x => x.Request.ParentContext.Request.Service.FullName);
Ich bin auf der Suche nach einem Weg, um dies zu erschaffen in Einfachen Injektor. Bisher habe ich alles andere funktioniert aber. Ich kann die Protokollierung zu arbeiten, wenn auch ohne den richtigen logger-Namen angezeigt wird, indem Sie Folgendes tun:
_container.Register<ILogger>(() => new Logger("test"));
Jemand irgendwelche Erfahrung mit etwas ähnlichem?
- Verwandte: stackoverflow.com/questions/13675137/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Registrierung ist eine form der Kontext-basierte Injektion. Sie können verwenden Sie eine der
RegisterConditional
überladungen für diese.RegisterConditional
jedoch nicht die Nutzung von factory-Methoden zu konstruieren a Typ. So erstellen Sie eine generische version IhresLogger
- Klasse, wie folgt:Können Sie sich registrieren, können Sie es wie folgt:
Aber bitte Lesen Sie diese Stackoverflow-Frage (und meine Antwort) und Fragen sich, wenn Sie nicht die Protokollierung zu viel.
Kontext-basierte Injektion wird nun unterstützt in Einfachen Injektor 3 mit den
RegisterConditional
Methode. Zum Beispiel, um zu injizieren, einen Logger in Consumer1 und ein Datenlogger in Consumer2, verwenden Sie die RegisterConditional überlastung, übernimmt eine Umsetzung Art factory delegieren wie folgt: