2015-01-07 2 views
1

Ninject를 사용하는 유형에서 선택적으로 차단을 사용하려고합니다. 구현이 특정 인터페이스를 구현하는 경우이를 가로 채고 싶습니다. Ninject Activation Context를 검사하여 타겟이 인터페이스를 구현하는지 확인하려면 어떻게해야합니까? 내가 푸하지 IFoo를 확인하려면이 예에서는Ninject 활성화 컨텍스트가 Type에 연결되어 있는지 확인하십시오.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var kernal = new StandardKernel(); 
     kernal.Bind<IFoo>().To<Foo>(); 

     kernal.Intercept(x => 
     { 
      if (x is an IGetIntercepted) 
      { 
       return true; 
      } 
      return false; 
     }); 
    } 

    public interface IGetIntercepted 
    { } 

    public interface IFoo 
    { } 

    public class Foo : IFoo, IGetIntercepted 
    { } 
} 
  • 참고.

답변

1
내가 계획 속성을 내려다 된

,이 작동하는 것 같다 (IFoo 쉽게 Ninject.Activation.Binding.Service 속성에서 찾을 수 있습니다) :

if (x.Plan.Type.GetInterface(typeof(IGetIntercepted).FullName) != null) 
{ 
    return true; 
}