Sagen wir, ich habe zwei Controller: ControllerA und ControllerB. Beide Controller akzeptieren als Parameter IFooInterface. Jetzt habe ich 2 Implementierungen von IFooInterface, FooA und FooB. Ich möchte FooA in ControllerA und FooB in ControllerB injizieren. Dies wurde in Ninject leicht erreicht, aber ich bewege mich aufgrund der besseren Leistung zum Simple Injector. Wie kann ich das in Simple Injector tun? Beachten Sie, dass sich ControllerA und ControllerB in verschiedenen Assemblies befinden und dynamisch geladen werden.Einfache Einspritzung bedingte Einspritzung
Dank
RegisterConditional Methode hat diese Frage mehrmals auf Stackoverflow kommen, und es ist mein Pflicht, dieses Design in Frage zu stellen. Obwohl ein solches Design nicht immer falsch ist, müssen Sie vorsichtig sein, das Liskov Substitutionsprinzip nicht zu verletzen. Die Frage ist also: Funktioniert ControllerA noch, wenn es mit FooB injiziert wird, oder bricht es? Wenn es bricht, verletzen Sie LSP und das bedeutet, dass FooA und FooB jeweils eine andere Schnittstelle implementieren sollten. – Steven
@Steven danke, du hast mir etwas zum denken gegeben :) – Davita
@Steven noch ein Gedanke, der ControllerA wird immer noch funktionieren, wenn FooB injiziert wird, aus dieser Perspektive kann ich prinzipiell die Anzahl der Controller verkürzen. Das Problem ist, dass der Controller IFooInterface mit einigen Daten aus der Datenbank versorgt, die für FooA und FooB unterschiedlich sind. Daher sollte er wissen, welche Daten aus der Datenbank ausgewählt werden sollen. – Davita