我有一个我用来引导的课程。 作为对象创建的一部分,我按惯例使用它来绑定接口。
一切正常,直到我尝试添加拦截器。
public class ContainerBootstrapper : IDisposable
{
StandardKernel _c;
public ContainerBootstrapper()
{
_c =new StandardKernel();
_c.Bind(b => b.FromAssembliesMatching("Facade*.*").SelectAllClasses().BindDefaultInterfaces());
_c.Bind(b => b.FromAssembliesMatching("Object*.*").SelectAllClasses().BindDefaultInterfaces());
_c.Bind(b => b.FromAssembliesMatching("Logger*.*").SelectAllClasses().BindDefaultInterfaces());
//even using the built in ActionInterceptor like this:
_c.Intercept(c => true)
.With(new ActionInterceptor(invocation =>
Console.Write(invocation.Request.Method.Name)));
当这一行被命中时,我收到一个错误 - 加载Ninject组件IAdviceFactory时出错 没有在内核的组件容器中注册这样的组件。
建议: 1)如果您为KernelBase创建了自定义子类,请确保您已正确使用 实现了AddComponents()方法。 2)确保没有通过调用RemoveAll()从容器中删除组件。 3)确保您没有意外创建多个内核。
我在顶部:
using Ninject.Extensions.Conventions;
using Ninject.Extensions.Interception.Injection.Dynamic;
using Ninject.Extensions.Interception.Infrastructure.Language;
using Ninject.Extensions.Interception;
并使用NuGet包。试过动态代理和LinFu。两者都给出了同样的错误。
任何人都有任何想法尝试? 提前谢谢。
答案 0 :(得分:0)
事实证明,即使我有一个对引导项目的引用,我认为我所有的dinject自动复制的dll都不是这样的。手动移动它后就可以了。