3

就我而言,我有主项目和测试项目。我在测试项目中得到了正确的结果,我只有一个安装程序类并将所有内容注册在一个地方。在我的主要项目中,我有几个安装程序(一个用于服务,一个用于拦截器,一个用于公共库,一个用于数据持久性)。对于主项目,我收到指定的错误:

这是一个 DynamicProxy2 错误:拦截器试图为没有目标的方法“继续”,例如,接口方法或抽象方法

我正在努力找出问题所在。我插入了接受数据持久层接口的构造函数,发现它只接收一个代理对象。

4

3 回答 3

2

另外,请参见此处:手动将工厂扩展加载到 Ninject 内核中

在某些情况下,可能需要手动加载扩展。我的解决方案是在内核构建期间添加以下代码:

if (!kernel.HasModule("Ninject.Extensions.Factory.FuncModule"))
{
    kernel.Load(new FuncModule());
}
于 2019-01-04T13:33:46.263 回答
1

为什么会发生这种情况在此处指定:http: //kozmic.net/2009/03/20/castle-dynamic-proxy-tutorial-part-viii-interface-proxy-without-target/

Krzysztof 解释说,Castle甚至可以解析接口,Windsor 将为创建一个类。但是,如果您想使用拦截器并调用 invocation.Proceed() 方法,则需要指定该方法内部发生的情况(例如,使用 lambda 表达式)

解决方案: 在我的情况下,解决方案是将所有安装程序合二为一,拦截器安装程序除外。那个人可以一个人呆着,一切都很好。

于 2013-09-25T09:00:08.717 回答
0

如果您通过 Update 方法遇到此问题,请像这样更改它:

 var myObj = _dbContext.Set<T>().Find(entity.Id);
 _dbContext.Entry(myObj).CurrentValues.SetValues(entity);
_dbContext.SaveChanges();
于 2020-10-14T13:54:17.240 回答