2015-01-07 8 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 
    { } 
} 
  • Примечание В этом примере я хочу, чтобы проверить, не Foo IFoo. (IFoo легко найти в свойстве Ninject.Activation.Binding.Service)

ответ

1

Я был с видом на недвижимость план, это похоже на работу:

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

 Смежные вопросы

  • Нет связанных вопросов^_^