2013-10-25 23 views
5

Ich bin an einem bestimmten Szenario in einer Anwendung suchen, die ich zur Zeit aufNinject zur Laufzeit verbindlich

arbeite ich will ein Admin-Offizier in der Lage sein systemweite Einstellungen in einer Anwendung zu ändern.

public class ApplicationSettings 
{ 
//bla bla bla 

} 

Beim Start habe ich die Bindung folgend

public static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<ApplicationSettings>().ToSelf().InSingletonScope(); 
} 

alles schön und gut ist, wie ich, dass die gleiche Instanz der Anwendungseinstellungen verstehen, solange der Kernel bedient wird aktiv

Meine Frage ist das. Was passiert, wenn ich die Anwendungseinstellungen zur Laufzeit ändern muss? Und ich möchte automaticcally den Wert der Instanz im Kernel Application ändern

Wird es möglich sein, so etwas wie dieses

public void ChangeSettings(IKernel kernel, ApplicationSettings setting) 
{ 
    var setting = kernel.Get<ApplicationSettings>(); 
    //change the values of the instance 
} 

Frage zu tun, wie ich den Kernel aktualisiere Bindung, so dass nachfolgende Verweise auf die Singleton-Instanz wird auf die neu modifizierte Version beziehen

Dank

Antwort

10

Was Rebind <>?

public void ChangeSettings(IKernel kernel, ApplicationSettings setting) 
{ 
    var setting = kernel.Get<ApplicationSettings>(); 
    kernel.Rebind<ApplicationSettings>().ToConstant(setting); 
}