Un'alternativa potrebbe essere quella di registrare un delegato che è in grado per cambiare l'istanza sottostante fornita dal contenitore. Si consideri il seguente codice:
var theInstance = new MyType();
var builder = new ContainerBuilder();
builder.Register(context => theInstance);
builder.Register<Action<MyType>>(context => newInstance => theInstance = newInstance);
var container = builder.Build();
È ora possibile risolvere l'azione per ottenere un delegato che può cambiare la registrazione:
var updateInstance = c.Resolve<Action<MyType>>();
updateInstance(new MyType());
Nota: se potesse approfondire quando e perché è necessario modificare l'istanza, forse potremmo anche trovare una soluzione migliore.
fonte
2010-10-18 11:38:33
L'aggiornamento (contenitore) è stato obsoleto. Si consiglia di ricostruire il contenitore. –