¿Debo hacer algo en la línea de esto? Estoy pensando en todos mis controladores que heredan de BaseController
. ¿Rompe esto el patrón de diseño de IoC? ¿Qué más debería hacer en su lugar?Controladores IoC y ASP.NET MVC
public class BaseController: Controller
{
protected ICookieService CookieService {
get {
return ServiceResolver.Resolve<ICookieService>(new { HttpContext = HttpContext });
}
}
protected IDateTimeService DateTimeService {
get {
return ServiceResolver.Resolve<IDateTimeService>();
}
}
protected ISettingsService SettingsService {
get {
return ServiceResolver.Resolve<ISettingsService>();
}
}
}
Estoy de acuerdo. Solo debe usar su resolución de tipo en la raíz de su aplicación. Si no es por otra razón que si necesita cambiar los inyectores, no tiene que cambiar todo su código, solo el punto en el que su primer objeto. En mi aplicación, el único lugar que conoce sobre el inyector es Global.asax, e incluso allí lo estoy usando en 1 lugar en demasiados lugares (eso es lo que estoy usando en 2 lugares). Con la inyección del constructor, todo simplemente cae en su lugar y su objeto está aislado de todo. – Talljoe
En realidad estoy usando Castle Windsor pero con un conjunto de interfaces de contenedor para ocultar su complejidad/dependencia. –
¡Gracias por su ayuda! –