日期:2014-05-19  浏览次数:20915 次

泛型问题高分求解
有两个接口IA、IB,这两者有一个同名的方法叫Method;现在我要定义一个泛型方法,传进去参数即可以是IA类型,也可以是IB类型,我要在泛型方法中使用该参数的Method方法。

1.IA和IB有个共同的基接口叫IC,IC包含Method的定义,这种情况下约束可以写成这样:
TemplateMethod <T> (T   prT)   where   T   :   IC

2.IA和IB之间没有共同的基接口来定义Method,这种情况下类型约束该怎么写?

------解决方案--------------------
关注中。。。。。。。。。
------解决方案--------------------
听过泛型 没怎么用过 帮顶
------解决方案--------------------
ding
------解决方案--------------------
不可能的。你以为是C++呀
------解决方案--------------------
看错了.原来要支持IA,IB接口中的任意一个..这样约束不行了.
------解决方案--------------------
把参数转成IC,直接调Method就可以了.
------解决方案--------------------
呵呵,那天微软搞个T:IA OR T:IB就行了
------解决方案--------------------
方法内部反射一下,找不到Method的抛异常
------解决方案--------------------
的确是个好问题,呵呵
第一步:在模板处确定一个多约束
where T:IA,IB
第二步:使用Type类的InvokeMember方法
可能需要查询是否实现了该方法,以发出异常。
不过由于存在字符串比较,性能较差。

建议如果的确两接口有公用接口,可以提取一个基础接口,
IA和IB分别继承此接口