没有这样的组件在内核中注册';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) 请确保您没有意外创建多个内核。
如何解决?
很可能您添加了Ninject.Extension.Interception,但没有添加任何具体的实现Ninject.Extession.Interception、DynamicProxy或Niject.Extencion.Interceptation、LinFu