Посмотрите, связан ли контекст активации 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)

person Eric Scherrer    schedule 07.01.2015    source источник


Ответы (1)


Я просматривал свойство Plan, похоже, это работает:

if (x.Plan.Type.GetInterface(typeof(IGetIntercepted).FullName) != null)
{
    return true;
}
person Eric Scherrer    schedule 07.01.2015