1

ASP MVC 3プロジェクトでNinjectを使用していますが、global.asaxファイルを(通常どおりに)変更してから、次のようなクラスNinjectControllerFactoryを作成しました。

public class NinjectControllerFactory : DefaultControllerFactory  
    {
        private IKernel ninjectKernel;  
        public NinjectControllerFactory()  
        {
            ninjectKernel = new StandardKernel();  
            AddBindings();  
        }    
        protected override IController GetControllerInstance(RequestContext requestContext,
        Type controllerType)  
        {
            return controllerType == null  
            ? null  
            : (IController)ninjectKernel.Get(controllerType);  
        }  
        private void AddBindings()  
        {
            // put additional bindings here
            ninjectKernel.Bind<IServiceName>().To<ConcreteClass>();
        }  
    }

これはすべて正常に機能します。

次に、Entity Frameworkコンテキストオブジェクトをバインディングに追加して、サービスごとに新しいインスタンスを作成する必要がないようにします。

誰かがそれを行う方法を教えてもらえますか?

Entity Frameworkコンテキストを定義するだけの新しいインターフェイスを作成する必要がありますか?

ありがとう

4

1 に答える 1

3

自己バインディングを使用できます

kernel.Bind<MyDbContext>().ToSelf();

PS nugetのNinject.MVC3 パッケージもチェックアウトする必要があります

于 2012-06-22T10:51:00.077 に答える