1

Ninject.MVC3を使用しています。

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<Repository>().To<Repository>();
}       

App_Startにそのように登録します。このリポジトリを要求するコントローラでは問題なく動作します。ただし、このリポジトリを必要とするクラスもいくつかあります。

        [Inject]
        public MemberShipService(Repository repository)
        {
            this.Repository = repository;
        }

^クラスコンストラクタからの例。コンストラクターインジェクションを試しましたが、コンストラクターの引数を要求するため、エラーが発生します。プロパティインジェクションは単に機能しません。

asp.net mvc3でコンストラクターまたはプロパティインジェクションを機能させるために何か特別なことをする必要がありますか?上記で投稿した行以外は、NinjectWebCommon内で他の構成を行っていません。

4

1 に答える 1

3

クラスのインスタンスを使用するには、依存関係リゾルバーを使用してクラスのインスタンスを解決する必要があります。usingのインスタンスを作成しますMemberShipService

var memberShipService = 
    DependencyResolver.Current.GetService(typeof(MemberShipService)) as MemberShipService;

Repositoryこれにより、指定したコンストラクターを使用してインスタンス変数がバインドされます。

于 2012-05-23T11:10:19.417 に答える