c# – Ninject拦截动态代理问题
我正在尝试设置拦截以使用Ninject,我们一直使用它作为我们的依赖注入框架.
我已经从NuGet下载了拦截扩展,并尝试使用Castle Dynamicproxy实现和LinFu实现,但无法使用我们的应用程序. Castle在没有无参数构造函数的类上创建代理时出错,因为所有服务对象都通过构造函数注入了它们的依赖项,这是一个问题.错误是: System.ArgumentException:无法实例化类的代理:emedia.RapidSystems.Subscriber.Presenters.RRSubmissionPresenter. LinFu拦截器效果更好,直到代码调用带有泛型参数的方法然后它给了我以下内容: System.ArgumentException:泛型类型无效. 这是我试图拦截的其中一个类的简化版本代码: [LogCalls] public class Repository<T> : IRepository<T> where T : class { public virtual T GetEntity<TKey>(ObjectContext context,TKey key) { var entity = GetEntity(context,key,_emptyLoadingStrategy); return entity; } public virtual IQueryable<T> GetAll(ObjectContext context) { var query = GetAll(context,_emptyLoadingStrategy); return query; } public virtual T Add(ObjectContext context,T entity) { context.AddObject(EntitySetName(context),entity); return entity; } //other code goes here } 添加和GetAll工作正常,但在代理上调用GetEntity时会发生错误. 此时我被卡住了,因为拦截器都不能与代码库一起工作.有没有人得到Ninject拦截工作与一个真正复杂的生产系统,而不是一个简单的演示类,如果是这样,如何?我不介意我使用哪种拦截器,只要它有效. 或者Ninject的截取还不够成熟,我是否需要用Unity等其他东西来替换整个事物? 解决方法
使用版本3.0.0-rc2.它增加了对动态代理的接口代理的支持
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |