如何在AreaRegistration中使用Ninject

3

我在我的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以便解决依赖项/创建MustBeRegisteredAccount对象呢?

1个回答

1

我首先会尝试使用构造函数注入(即,查看MVC内部是否使用已注册的DependencyResolver来创建AreaRegistration类的实例(还没有找到任何关于这是否应该工作的信息,但有一种非常快速的方法可以通过经验法则找出:D)。

如果失败了,那么在MVC领域中使用DependencyResolver.GetService<MustBeRegisteredAccount>()服务定位器(反模式)的解决方法。(Ninject.MVC3扩展故意不公开全局Kernel实例,因为那只会鼓励不必要的使用)。

请参见http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html


DependencyResolver 不用于创建 AreaRegistration 的实例。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接