0

Jasonの回答に基づいてasp.netwebformsアプリケーションでninjectバージョン3を使用しようとしています

asp.net WebフォームにNinjectまたはDIを実装するにはどうすればよいですか?

しかし、それは機能していませんか?

public class Global : NinjectHttpApplication
    {
........
protected override IKernel CreateKernel()
        {
            IKernel kernel = new StandardKernel(new NinjectWebCommon());
            return kernel;
        }
    }


public class NinjectWebCommon : NinjectModule
    {

        public override void Load()
        {
            Bind<IProductRepository>().To<EFProductRepository>();
        }
    }

CreateKernelが呼び出されなかったデバッグを開始すると、ページに例外NullReferenceExceptionが発生します。これは、インジェクションが発生しなかったことを意味します。

4

1 に答える 1

2

動作しました。必要がないのでglobal.asaxファイルを削除し、NinjectWebCommon.csを追加すると、ninjectの参照が削除され、nuget(Ninject-Ninject.Web)から再度追加され、App_Start/NinjectWebCommon.csにバインディングが追加されました。

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

そして私が使用したページで

[Inject]
        public IProductRepository Repository { get; set; }

そして私のために働いた。

于 2013-03-25T12:17:31.753 に答える