2016-07-26 10 views
1

현재 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 패키지를 사용하고 있습니다?

답변