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 以解决 DEPENDENCIES / 创建 MustBeRegisteredAccount 对象?

4

1 回答 1

1

我首先尝试使用构造函数注入(即,看看 MVC 是否在内部也使用注册DependencyResolver来创建AreaRegistration类的实例(还没有发现任何一种方法或另一种方法是否应该有效,但有一种非常快速的方法可以凭经验找出: D)。

如果做不到这一点,使用 aDependencyResolver.GetService<MustBeRegisteredAccount>()是MVC领域中的服务定位器(反模式)解决方法。(Ninject.MVC3 扩展故意不公开全局内核实例,因为这只会鼓励无偿使用)。

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

于 2012-09-14T04:22:33.803 回答