Ninject:抽象类

时间:2010-05-14 08:21:32

标签: c# asp.net-mvc ninject ninject-2

我是否需要在抽象类中执行不同的操作以使依赖注入与Ninject一起使用?

我有一个带有以下代码的基本控制器:

public abstract class BaseController : Controller
{
    public IAccountRepository AccountRepository
    {
        get;
        set;
    }
}

我的模块看起来像这样:

public class WebDependencyModule : NinjectModule
{
    public override void Load()
    {
        Bind<IAccountRepository>().To<AccountRepository>();
    }
}

这是我的Global.asax

protected override void OnApplicationStarted()
{
    Kernel.Load(new WebDependencyModule());
}

protected override IKernel CreateKernel()
{
    return new StandardKernel();
}

当我使用IAccountRepository属性装饰[Inject]属性时,它可以正常工作。

1 个答案:

答案 0 :(得分:2)

不确定你要做什么。

看起来你想做Property Injection。如果是这样,你必须坚持属性。

Ninject并没有随意地将东西粘在属性中。

即使它可以,你也不想从试图理解什么取决于什么的角度来看它(我已经完全脱离了PI)。

如果你想进行构造函数注入,具体的Controller需要请求一个并将其传递给'BaseController'。

Ninject将转到Object并注入属性,但不会以任何特殊方式处理abstract类。

或者我错过了什么。