Einheit: Ersetzen registriert Typs mit einem anderen Typ zur Laufzeit

Wir haben ein Szenario, wo der Benutzer kann wählen zwischen verschiedenen hardware zur Laufzeit. Im hintergrund haben wir verschiedene hardware-Klassen, die alle implementieren eine IHardware - Schnittstelle. Wir wollen die Einheit zum registrieren des aktuell ausgewählten hardware-Instanz für die Schnittstelle. Allerdings, wenn der Benutzer wählt eine andere hardware, dies würde von uns verlangen zu ersetzen, die Registrierung zur Laufzeit.

Folgende Beispiel mag dies verdeutlichen:

public interface IHardware
{
    //some methods...
}

public class HardwareA : IHardware
{
    //...
}

public class HardwareB : IHardware
{
    //...
}


container.RegisterInstance<IHardware>(new HardwareA());

//user selects new hardware somewhere in the configuration...

//the following is invalid code, but can it be achieved another way?
container.ReplaceInstance<IHardware>(new HardwareB());

Kann dieses Verhalten erreicht werden, irgendwie?

BTW: ich bin mir völlig bewusst, dass Fälle, die bereits gelöst wurden, aus dem container werden nicht ausgetauscht mit der neuen Instanzen, natürlich. Würden wir kümmern uns selbst durch Sie zu zwingen, beheben Sie die Instanz erneut.

InformationsquelleAutor gehho | 2010-04-23
Schreibe einen Kommentar