Dois-je faire quelque chose dans ce sens? Je pense à tous mes contrôleurs héritant de BaseController
. Est-ce que cela brise le modèle de conception de l'IoC? Que devrais-je faire d'autre?Contrôleurs IoC et 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>();
}
}
}
Je suis d'accord. Vous ne devez utiliser votre résolveur de type qu'à la racine de votre application. Si pour aucune autre raison que si vous avez besoin de changer les injecteurs, vous n'avez pas besoin de changer tout votre code, seulement le point où votre premier objet. Dans mon application, le seul endroit qui connait l'injecteur est Global.asax, et même là je l'utilise dans un trop grand nombre d'endroits (c'est-à-dire que je l'utilise en 2 endroits). – Talljoe
Je suis en train d'utiliser Castle Windsor mais avec un ensemble d'interfaces wrapper pour cacher sa complexité/dépendance –
Merci pour votre aide! –