我的mvc3项目中有一个“帐户”区域。
它有一个AreaRegistration类来限制只注册用户的可见性,如下所示:
public class AccountAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Account";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Account_default",
"{account}/{controller}/{action}/{id}",
new {controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new {account = new MustBeRegisteredAccount(DEPENDENCIES)},
new string[] {"Continuum.Web.Areas.Account.Controllers"}
);
}
}
那么如何设置ninject才能解析DEPENDENCIES /创建MustBeRegisteredAccount对象?
答案 0 :(得分:1)
我首先尝试使用构造函数注入(即,看看MVC是否在内部使用已注册的DependencyResolver
来创建AreaRegistration
类的实例(没有找到任何一种方式,无论是否应该工作,但有一个非常快速的方法来找到经验:D)。
如果失败,使用DependencyResolver.GetService<MustBeRegisteredAccount>()
是MVC土地中的Service Locator (antipattern)解决方法。 (Ninject.MVC3扩展故意不公开全局内核实例,因为这只会鼓励无偿使用)。
请参阅http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html