Estoy usando el framework IoC Simple Injector, y me gustaría poder cambiar el registro de dependencia en tiempo de ejecución. Por ejemplo, tengo dos implementaciones, A
y B
, de la interfaz I
. La implementación A
se registra al inicio de la aplicación, pero dependiendo de algún indicador que pueda cambiar durante el tiempo de ejecución, me gustaría cambiar la implementación. Actualmente estamos haciendo esto el evento OnActionExecuting
de nuestro BaseController
, del que todos nuestros controladores heredan. Aquí está el código de muestra de lo que estoy tratando de hacer.¿Cómo cambiar el registro de dependencia en tiempo de ejecución usando un inyector simple?
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);
}
Gracias de antemano por su ayuda.
Recomiendo combinar un patrón Factory with a Strategy, en lugar de usar un DI Container para esto. Use el contenedor para resolver su gráfico de objetos desde el principio. Ver [Composition Root] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx). – TrueWill
¿Necesita hacer eso manualmente? ¿Qué pasa con el uso de un marco contenedor IOC? –