Посмотрите, связан ли контекст активации Ninject с типом
Я пытаюсь выборочно использовать перехват на типах, используя Ninject. Если реализация реализует определенный интерфейс, я хочу его перехватить. Как я могу проверить Ninject Activation Context, чтобы увидеть, реализует ли его цель интерфейс?
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;
}