如何反射静态泛型方法?

zhujiawei7 2012-05-14 04:26:35
NDD,折腾了一下午,反射不出来。

public static class ClassA
{
public static object Method1(string str){}

public static object Method1<T>(IList<T> list){}
}


静态类中有Method12个静态方法,我想反射执行这个泛型方法Method1<T>(IList<T> list)
但是怎么都反射不到这个泛型方法,求帮助谢谢。

因为有同名方法,所以我是采用Type.GetType(typeName).GetMethod(methodName, types)来获取方法。
但麻烦的是types,如果用Type.GetType("System.Collections.Generic.IList`1[T]),返回是个null。
如果T写了明确的实体对象,还是无法反射到这个泛型方法。
...全文
398 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq13833254607 2012-05-15
  • 打赏
  • 举报
回复
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/f901efc1-2baa-480f-a3cf-bb5b5df60a80

这里说了,这是.net的限制,没有办法单独通过GetMethod获取generic方法,只能遍历了
请叫我卷福 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

遍历
C# code

MethodInfo[] ms = Type.GetType("WindowsApplication1.ClassA").GetMethods();
foreach (MethodInfo info in ms)
{
if (info.Name == "Method……
[/Quote]
应该不知道 方法名称 吧
bdmh 2012-05-15
  • 打赏
  • 举报
回复
遍历

MethodInfo[] ms = Type.GetType("WindowsApplication1.ClassA").GetMethods();
foreach (MethodInfo info in ms)
{
if (info.Name == "Method1" && info.IsGenericMethod)
{
MessageBox.Show("ok");
break;
}
}
wanghui0380 2012-05-15
  • 打赏
  • 举报
回复
别的不多说
只告诉你一个关键字“MethodInfo.MakeGenericMethod()”方法

剩下的事情你google把,5秒种找到答案
zhujiawei7 2012-05-15
  • 打赏
  • 举报
回复
也就是如果方法有重载,想获反射参数中带有泛型的方法,该如何做?

help help
zhujiawei7 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/f901efc1-2baa-480f-a3cf-bb5b5df60a80

这里说了,这是.net的限制,没有办法单独通过GetMethod获取generic方法,只能遍历了
[/Quote]

非常感谢,这还真是个现有鸡还是先有蛋的问题了。呵呵
zhujiawei7 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

别的不多说
只告诉你一个关键字“MethodInfo.MakeGenericMethod()”方法

剩下的事情你google把,5秒种找到答案
[/Quote]

你这只是获取泛型方法,我要的是获取具有泛型参数的方法,要看清问题啊,亲。
zhujiawei7 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

参考
http://www.cnblogs.com/mgen/archive/2011/12/02/2271852.html
[/Quote]

你这比较屌,动态生成方法,但不是我要的。
而且里面有句var mbuilder = tb.DefineMethod("doo", MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static);
可我这DefineMethod是个属性,不是方法啊。。。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧