2015-01-07 92 views
1

我想有選擇地使用攔截類型使用Ninject。如果一個實現實現了特定的接口,我想攔截它。我如何檢查一個Ninject激活上下文來查看它的目標是否實現了一個接口?看看是否Ninject激活上下文綁定到類型

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 
    { } 
} 
  • 注意,在這個例子中,我要檢查美孚,不IFoo的。 (的IFoo在Ninject.Activation.Binding.Service財產很容易找到)

回答

1

我俯瞰計劃財產,這似乎工作:

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