首页 / C# / c# – Ninject拦截动态代理问题
c# – Ninject拦截动态代理问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Ninject拦截动态代理问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1472字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试设置拦截以使用Ninject,我们一直使用它作为我们的依赖注入框架.
我已经从NuGet下载了拦截扩展,并尝试使用Castle Dynamicproxy实现和LinFu实现,但无法使用我们的应用程序.
Castle在没有无参数构造函数的类上创建代理时出错,因为所有服务对象都通过构造函数注入了它们的依赖项,这是一个问题.错误是:
System.ArgumentException:无法实例化类的代理:emedia.RapidSystems.Subscriber.Presenters.RRSubmissionPresenter.
找不到无参数构造函数.
参数名称:constructorArguments
LinFu拦截器效果更好,直到代码调用带有泛型参数的方法然后它给了我以下内容:
System.ArgumentException:泛型类型无效.
参数名称:methodInfo
这是我试图拦截的其中一个类的简化版本代码:
[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.它增加了对动态代理的接口代理的支持
内容总结
以上是互联网集市为您收集整理的c# – Ninject拦截动态代理问题全部内容,希望文章能够帮你解决c# – Ninject拦截动态代理问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。