首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ninject.Web.Mvc附加组件不能与ASP.NET MVC 2一起使用

Ninject.Web.Mvc附加组件不能与ASP.NET MVC 2一起使用
EN

Stack Overflow用户
提问于 2010-10-14 09:03:58
回答 1查看 741关注 0票数 0

我在ASP.NET MVC2中使用了Ninject.Web.Mvc (MVC2版本)插件。

代码语言:javascript
复制
protected override void OnApplicationStarted()
{
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes;
    // RegisterAllControllersIn() is not available in the MVC 2 version of Ninject
}

protected override IKernel CreateKernel()
{
    var kernel = new StandardKernel();
    kernel.Bind<IRepository>().To<NHibernateRepository>();

    return kernel;
}

我还有一个基本的RepositoryController

代码语言:javascript
复制
public class RepositoryController : Controller
{
    protected IRepository Repository { get; set; }

    public RepositoryController()
    {

    }

    public RepositoryController(IRepository repository)
    {
        Repository = repository;
    }
}

正如您所看到的,这是一个非常简单的设置,其中RepositoryController希望被注入一个IRepository的实例,并且配置为使用NHibernateRepository的一个具体实例。但是,这不起作用,每当我试图在控制器中访问Repository属性时,它都是空的。但是,如果我将代码改为这样:

代码语言:javascript
复制
[Inject]
public IRepository Repository { get; set; }

那么它工作得很好。有人知道为什么构造函数注入不起作用,但属性注入起作用了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-14 09:10:04

尝试删除无参数构造函数。

Ninject可能选择了错误的构造函数来解析。

为了测试它,你可以在两个构造函数中都设置一个断点,看看是哪一个触发的,但我有一种感觉,那就是无参数的那个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3929303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档