현재 Ninject와 Ninject.Web을 사용하여 ASP.NET WebForms 응용 프로그램의 전역 클래스 (Global.asax)에 종속성을 주입하려고합니다. 마자 내가 주입 된 클래스 (예를 들어 Application_Start)에서 함수 중 하나를 호출하려고하면 NullReferenceException으로 끝납니다.Ninject 속성을 사용하여 Global.asax의 Application_Start 메서드에 종속성 삽입하기
을 Global.asax :
public class Global : System.Web.HttpApplication
{
[Inject]
public IJobScheduler JobScheduler { private get; set; }
protected void Application_Start(object sender, EventArgs e)
{
JobScheduler.RegisterOnStartup();
}
}
NinjectWebCommon.cs
public static class NinjectWebCommon
{
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IJobScheduler>().To<JobScheduler>();
}
}
IJobScheduler
public interface IJobScheduler
{
void RegisterOnStartup();
}
JobScheduler 이미 생성자 삽입은 글로벌 클래스 불가능하다로, 속성 주입을 사용하기 위해 노력하고있어
public class JobScheduler : IJobScheduler
{
public void RegisterOnStartup()
{
//Stuff goes in here ...
}
}
. DI는 다른 곳에서 일하고 있습니다. 단지 Global.asax에 있지 않습니다. 시작하는 동안 물건을 등록해야합니다.
관련 질문에 대한 답변을 찾았습니다 : How do you resolve a Ninject dependency in the global file in ASP.NET?하지만 불행히도 이것은 저에게 효과적이지 않습니다.
<package id="Ninject" version="3.2.2.0" targetFramework="net40" />
<package id="Ninject.Web" version="3.2.1.0" targetFramework="net40" />
<package id="Ninject.Web.Common" version="3.2.0.0" targetFramework="net40" />
<package id="Ninject.Web.Common.WebHost" version="3.2.0.0" targetFramework="net40" />
어떤 아이디어 :
나는 다음과 같은 Ninject에 NuGet 패키지를 사용하고 있습니다?