在我的情况下,我有主项目和测试项目。我在测试项目上获得了正确的结果,我只有一个安装程序类,并在一个地方注册所有内容。在我的主项目中,我有几个安装程序(一个用于服务,一个用于拦截器,一个用于公共库,一个用于数据持久性)。对于主项目,我收到了指定的错误:
这是一个DynamicProxy2错误:拦截器试图为没有目标的方法“继续”,例如,接口方法或抽象方法
我正在努力找出问题所在。我插入了接受数据持久层接口的构造函数,并看到它只接收代理对象。
答案 0 :(得分:1)
为什么会发生这种情况在此指定:http://kozmic.net/2009/03/20/castle-dynamic-proxy-tutorial-part-viii-interface-proxy-without-target/
Krzysztof解释说,Castle可以解决甚至是界面,Windsor会为您创建一个类。但是,如果要使用拦截器并调用invocation.Proceed()方法,则需要指定该方法内部发生的事情(例如,使用lambda表达式)
<强>解决方案:强> 在我的情况下,解决方案是将所有安装程序放入一个,除了拦截器安装程序。那个人可以独自一人,而且一切都很好。
答案 1 :(得分:1)
此外,请参见此处:Manually Loading the Factory Extension into the Ninject Kernel
在某些情况下,可能有必要手动加载扩展。我的解决方案是在内核构建过程中添加以下代码:
if (!kernel.HasModule("Ninject.Extensions.Factory.FuncModule"))
{
kernel.Load(new FuncModule());
}
答案 2 :(得分:0)
如果您通过Update方法遇到此问题,请像这样更改它:
var myObj = _dbContext.Set<T>().Find(entity.Id);
_dbContext.Entry(myObj).CurrentValues.SetValues(entity);
_dbContext.SaveChanges();