Sto utilizzando il framework IoC Simple Injector e vorrei poter modificare la registrazione delle dipendenze in fase di esecuzione. Ad esempio, ho due implementazioni, A
e B
, dell'interfaccia I
. L'implementazione A
è registrata all'avvio dell'app, ma a seconda di alcuni flag che possono cambiare durante il runtime, vorrei passare all'implementazione. Attualmente stiamo facendo questo l'evento OnActionExecuting
del nostro BaseController
, da cui tutti i nostri controllori ereditano. Ecco il codice di esempio di ciò che sto cercando di fare.Come modificare la registrazione delle dipendenze in fase di esecuzione utilizzando l'iniettore semplice?
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);
}
Grazie in anticipo per il vostro aiuto.
Si consiglia di combinare una Fabbrica con un modello di strategia, piuttosto che utilizzare un contenitore DI per questo. Usa il contenitore per risolvere il tuo grafico degli oggetti nelle prime fasi. Vedi [Composizione radice] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx). – TrueWill
Hai bisogno di farlo manualmente? Che ne pensi di utilizzare un framework di contenitori IOC? –