asp.net-mvc - 我如何在 AreaRegistration 中使用 ninject

标签 asp.net-mvc ninject areas

我的 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 对象?

最佳答案

我会首先尝试使用构造函数注入(inject)(即,看看 MVC 是否在内部使用注册的 DependencyResolver 来创建 AreaRegistration 类的实例(还没有找到任何一种方法来确定它是否应该起作用,但是有一种根据经验找出答案的快速方法 :D)。

否则,使用 DependencyResolver.GetService<MustBeRegisteredAccount>()Service Locator (antipattern) MVC 领域的解决方法。 (Ninject.MVC3 扩展故意不公开全局内核实例,因为那样只会鼓励无偿使用)。

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

关于asp.net-mvc - 我如何在 AreaRegistration 中使用 ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414109/

相关文章:

jquery - Google Analytics 与 MVC3 的最佳放置位置在哪里

ninject - 使用 Ninject 2.2 更改默认对象范围

asp.net-mvc - 中等信任度下 MVC Controller + 依赖注入(inject) (Ninject) 的问题

c# - 在 MVC 中对 View 、 Controller 、模型进行分组

javascript - MVC 如何从 html 触发其他服务器上的操作

dependency-injection - Ninject 可以注入(inject)一个类并使其引用目标类作为反向引用吗?

javascript - JavaScript 文件在 ASP.NET Core 区域中的位置

asp.net-mvc - 如何在 ASP.NET MVC 1.0 中实现区域以与 ASP.NET MVC 2.0 最大程度兼容

c# - ASP.NET MVC 不同的路由用于不同的 Action