Tenemos un escenario donde el usuario puede elegir entre diferentes hardware en tiempo de ejecución. En el fondo tenemos varias clases de hardware diferentes que implementan una interfaz IHardware
. Nos gustaría utilizar Unity para registrar la instancia de hardware actualmente seleccionada para esta interfaz. Sin embargo, cuando el usuario selecciona otro hardware, esto requerirá que reemplacemos este registro en tiempo de ejecución.Unidad: Reemplace el tipo registrado con otro tipo en tiempo de ejecución
el siguiente ejemplo se podría hacer esto más claro:
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());
¿Se puede lograr este comportamiento de alguna manera?
BTW: Estoy completamente al tanto de que las instancias que ya se han resuelto del contenedor no se reemplazarán con las nuevas instancias, por supuesto. Nos ocuparíamos de eso nosotros mismos forzándolos a resolver la instancia una vez más.
Eso está bien, no sabía/que tratar. ¡Muchas gracias! – gehho