J'ai ce modèlemodèle de conception pour un contrôleur de base avec injection dependecy - MVC 3 + Ninject
public abstract class BaseController : Controller
{
readonly RepositoryFactory _rep;
protected RepositoryFactory rep
{
get
{
return _rep;
}
}
readonly ManageRoles _man;
readonly ElementAvailableForUser _env;
protected ElementAvailableForUser env
{
get
{
return _env;
}
}
public BaseController()
: this(DependencyResolver.Current.GetService<RepositoryFactory>(),
DependencyResolver.Current.GetService<ManageRoles>(),
DependencyResolver.Current.GetService<ElementAvailableForUser>()) { }
public BaseController(RepositoryFactory rep, ManageRoles man, ElementAvailableForUser env)
{
_rep = rep;
_man = man;
_env = env;
}
}
Je suis donc en mesure de faire quelque chose comme ça
public class HomeController : BaseController
{
public ActionResult Index()
{
return View(rep.Offers.GetAll());
}
public ActionResult Sections()
{
return View(env);
}
}
dans tout mon contrôleur . Je suis sûr que ce soit pour DI et antimodèle IoC, donc je mince une solution comme celui-ci
public abstract class BaseController : Controller
{
...
// removed empty constructor
public BaseController(RepositoryFactory rep, ManageRoles man, ElementAvailableForUser env)
{
_rep = rep;
_man = man;
_env = env;
}
}
public class HomeController : BaseController
{
public HomeController(RepositoryFactory rep, ManageRoles man, ElementAvailableForUser env) : base(rep, man, env) { }
...
}
mais cette solution me oblige à insérer toutes les dépendances dans tous les contrôleurs et mettre à jour tout constructeur si je besoin d'une nouvelle variable globale (comme rep) ou une nouvelle variable privée pour basecontroller (comme man).
Quel schéma dois-je suivre et pourquoi?
Modifier J'ai trouvé ce question et this, mais je ne peux pas comprendre quels sont les modèles de conception dois-je suivre.
Qu'est-ce qui vous fait penser à un modèle de conception que vous devriez suivre? – bzlm
Cause seul un de ceci devrait être utilisé dans mon application. –