2014-03-01 1 views
0

내 클래스 (모델) 및 MVC 응용 프로그램의 컨트롤러에서 Ninject를 사용하는 방법을 찾아야합니다.MVC와 내 모델에서 동일한 Ninject 바인딩을 사용하는 방법

양면에서 동일한 바인딩을 사용하려면 어떻게해야합니까?

은 지금은 내가 NinjectWebCommon.cs 부트 스트랩을 내 커널을 초기화 생성 사용

public class NinjectDependencyResolver : IDependencyResolver 
{ 
    private IKernel k; 

    public NinjectDependencyResolver(IKernel kp) 
    { 
     this.k= kp; 
     AddBindings(); 
    } 

    public object GetService(Type serviceType) 
    { 
     return k.Get(serviceType); 
    } 

    public IEnumerable<object> GetServices(Type serviceType) 
    { 
     return k.GetAll(serviceType); 
    } 

    private void AddBindings() 
    { 
     k.Bind<ISerializer>().To<MySerializer>(); 
    } 
} 

MySerializer 내 직렬화 클래스입니다 : 같은

private static void RegisterServices(IKernel kernel) 
    { 
     System.Web.Mvc.DependencyResolver.SetResolver(
      new WebApplication1.Models.NinjectDependencyResolver(kernel) 
      ); 

    } 

NinjectDependencyResolver 보인다. 내 컨트롤러

,이 부분은 잘 작동합니다.

그러나 이제 나는 다음과 같은 모델을 가정 해 봅시다 :

public class MyButton 
{ 

    ISerializer serializer; 

    public MyButton(ISerializer weapon) 
    { 
     serializer = weapon; 
    } 

    public string ToSString() 
    { 
     return serializer.serialize("my string - "); 
    } 
} 

가 어떻게 내 모델도 Ninject에 일을 할 수 있습니까?

감사합니다.

당신은뿐만 아니라 모델을 주입하고이 스레드처럼 다음

private void AddBindings() 
    { 
     k.Bind<IMySerializer>().To<MySerializer>(); 
     k.Bind<IModel>().To<Model>(); 
    } 

바인딩 또는 모델을 주입하지 않으면 당신이 할 수있는 일을 추가 할 수 있습니다

답변

관련 문제