Ich möchte mehrere Implementierungen eines Service binden und alle auf einmal aufrufen:
%Vor%Ninject mag das nicht und wirft eine Ausnahme über mehrere Bindungen. Gibt es eine Möglichkeit, dass ich diesen Fehler umgehen kann und alle Implementierungen aufgerufen habe?
Außerdem können sich die Bind<>
-Aufrufe in verschiedenen Projekten befinden, die zur Laufzeit geladen werden können oder nicht, so dass das Erstellen einer einzelnen Implementierung, um sie aufzurufen, nicht funktioniert. Dies ist Teil einer Plug-in-Architektur für eine ASP.NET MVC 3-Website.
Wenn Sie die Konstruktorinjektion verwenden und einen List<IBreakfast>
-Parameter haben, erstellt Ninject eine Liste mit all Ihren Bindungen. Sie können dann Eat
für diese Instanzen aufrufen.
Sie können dieses Muster verwenden, um Ninject dazu zu bringen, beispielsweise eine Liste Ihrer Plugins zu erstellen.
%Vor%Ausgabe:
Eier
Spam
MoreSpam
Sie können nicht viele konkrete Klassen an einzelne Schnittstellen binden, das ist gegen DI-Regeln.
Was Sie im Grunde tun möchten, ist, einige konkrete Instanzen zu initialisieren und ihre Methode aufzurufen.
Sie können dies überprüfen:
%Vor%Tags und Links c# dependency-injection c#-4.0 ninject