Ich verwende das Simple Injector IoC-Framework, und ich möchte in der Lage sein, die Abhängigkeitsregistrierung zur Laufzeit zu ändern. Zum Beispiel habe ich zwei Implementierungen, A
und B
, der Schnittstelle I
. Die Implementierung A
wird beim Start der App registriert, aber abhängig von einem Flag, das sich während der Laufzeit ändern kann, möchte ich die Implementierung wechseln. Wir tun dies derzeit das OnActionExecuting
Ereignis unserer BaseController
, die alle unsere Controller erben. Hier ist der Beispielcode von dem, was ich versuche zu tun.Wie ändert man die Abhängigkeitsregistrierung zur Laufzeit mit einem einfachen Injektor?
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
if (IsRuntimeFlag)
{
// check current implementation type and
// change implementation to A
}
else
{
// check current implementation type and
// change implementation to B
}
base.OnActionExecuting(filterContext);
}
Vielen Dank im Voraus für Ihre Hilfe.
Ich würde empfehlen, eine Fabrik mit einem Strategie-Muster zu kombinieren, anstatt einen DI-Container dafür zu verwenden. Verwenden Sie den Container, um Ihr Objektdiagramm frühzeitig aufzulösen. Siehe [Composition Root] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx). – TrueWill
Müssen Sie das manuell tun? Wie wäre es mit einem IOC Container Framework? –