首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用Linfu动态代理来代理带有泛型参数的接口?

是否可以使用Linfu动态代理来代理带有泛型参数的接口?
EN

Stack Overflow用户
提问于 2012-11-22 22:07:24
回答 1查看 229关注 0票数 0

我目前正在使用Linfu创建动态代理,它在普通界面上工作得非常好。问题是我现在需要为一个带有泛型参数的接口创建一个动态代理。直到运行时,我才知道泛型参数的类型(甚至加载包含它们的程序集)。有人知道这是否可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 00:12:10

好的,我可以通过调用MyProxyFactory.CreateProxy< T >()来实现,反射就像这样:

代码语言:javascript
复制
        Type myGenericParam1 = myParam1.GetType();
        Type myGenericParam2 = myParam2.GetType();
        Type myGenericInterfaceType = typeof(IMyInterface<,>);
        Type myActualInterfaceType = myGenericInterfaceType.MakeGenericType(myGenericParam1, myGenericParam2);
        var proxyObjectContainer = typeof(MyProxyFactory).GetMethod("CreateProxy", new Type[] { }).MakeGenericMethod(new[] { myActualInterfaceType }).Invoke(null, new object[] { });

        var proxyObject = proxyObjectContainer.GetType().GetProperty("Proxy").GetValue(proxyObjectContainer, null);

显然,如果需要将参数传递给代理工厂构造函数以设置拦截器,则还需要将其添加到创建proxyObjectContainer的行中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13514439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档