没有这样的组件在内核中注册';s组件容器

本文关键字:组件 注册 内核 | 更新日期: 2023-09-27 18:28:57

考虑以下代码:

public class IocConfig
{
    protected static StandardKernel Kernel { get; set; }
    public static void RegisterIoc(HttpConfiguration config)
    {
        using (IKernel kernel = new StandardKernel())
        {
            RegisterDependency();
            config.DependencyResolver = new NinjectDependencyResolver(kernel);
        }
    }
    public static void RegisterIoc()
    {
        RegisterDependency();
    }
    private static void RegisterDependency()
    {
        if (Kernel == null)
        {
            Kernel = new StandardKernel();
        }
        Kernel.Bind<CallCenterLogger>().ToSelf().Intercept().With(new TimingInterceptor());
    }
    public static T GetType<T>()
    {
        RegisterDependency();
        return Kernel.Get<T>();
    }
}

这一行:

        Kernel.Bind<CallCenterLogger>().ToSelf().Intercept().With(new TimingInterceptor());

我得到这个错误:

加载Ninject组件IAdviceFactory 时出错

内核的组件容器中没有注册这样的组件。

建议:

1) 如果你已经为KernelBase创建了一个自定义子类,请确保你有正确的

 implemented the AddComponents() method.

2) 确保您没有通过调用RemoveAll()从容器中删除组件。

3) 请确保您没有意外创建多个内核。

如何解决?

没有这样的组件在内核中注册';s组件容器

很可能您添加了Ninject.Extension.Interception,但没有添加任何具体的实现Ninject.Extession.Interception、DynamicProxyNiject.Extencion.Interceptation、LinFu