1

依存性注入を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]ます。

4

1 に答える 1

2

何をしようとしているのかわからない。

プロパティインジェクションを実行したいようです。もしそうなら、あなたは属性に固執する必要があります。

Ninjectは、プロパティにランダムに付着することはありません。

たとえそれができたとしても、何が何に依存するのかを理解しようとする観点からは、それを望んでいません(私は完全にPIから離れました)。

コンストラクターインジェクションを実行する場合、具象コントローラーはコンストラクターインジェクションを要求し、それを「BaseController」に渡す必要があります。

NinjectはObject、属性付きプロパティに移動して挿入しますが、abstractクラスを特別な方法で処理しません。

それか私は何かが足りない。

于 2010-05-14T14:10:07.443 に答える