C# 查看Ninject激活上下文是否绑定到类型

C# 查看Ninject激活上下文是否绑定到类型,c#,ninject,ninject-interception,C#,Ninject,Ninject Interception,我试图使用Ninject有选择地对类型使用拦截。如果一个实现实现了一个特定的接口,我想截取它。如何检查Ninject激活上下文以查看其目标是否实现了接口 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var kernal = new StandardKernel(); kernal.Bind<IF

我试图使用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
    { }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
var kernal=新的标准内核();
内核绑定()到();
内核截距(x=>
{
如果(x是一个可接受的参数)
{
返回true;
}
返回false;
});
}
接受公共接口
{ }
公共接口IFoo
{ }
公共类Foo:IFoo,IGetIntercepted
{ }
}
  • 注意,在这个例子中,我想检查Foo,而不是IFoo。(在Ninject.Activation.Binding.Service属性中很容易找到IFoo)

我当时正在俯瞰Plan酒店,这似乎可行:

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