C#私有方法反射

feihulii 2008-09-22 08:35:48
如何反射重载的私有有参方法


在一个类中有这样的方法重载
private string PrintString()
{
return "";
}

private string PrintString(string str)
{
return "str";
}

private string PrintString(string str1, string str2)
{
return str1+str2;
}


当这个类生成在一个dll中后 如何实现对这三个方法的发射呢? 注意都是私有的
...全文
666 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangweics 2010-09-14
  • 打赏
  • 举报
回复
fdfdfdfas
feihulii 2008-09-22
  • 打赏
  • 举报
回复
谢谢 发分了呵呵
JeffChung 2008-09-22
  • 打赏
  • 举报
回复
占个位置,看看有没有分接
mapserver 2008-09-22
  • 打赏
  • 举报
回复
BindingFlags.Instance ,反射的时候会去实例成员,也就是非静态的,你的3个方法都是非静态的,所以必须加上这个才行。
BindingFlags.Static ,要反射静态的方法就必须加上这个。

NonPublic 和 Public就不说了。
wjq 2008-09-22
  • 打赏
  • 举报
回复
其他几个参数,主要就是Type[],用处就是告诉GetMethod方法,你要的函数的重载是那个,它是根据参数类型来查找重载方法的
wjq 2008-09-22
  • 打赏
  • 举报
回复
BindingFlags.Instance 或 BindingFlags.Static必须指定其一,以确定你要的是否是静态方法.
这是微软的规定,没办法~
feihulii 2008-09-22
  • 打赏
  • 举报
回复
非常谢谢你 分数定会给了
不过 呵呵 呵呵 能不能再"得寸进尺"的问下

在反射私有方法时 给定第二个枚举参数 你这样写行 我以前这样写也行
BindingFlags.Instance|BindFlags.NonPublic|BindFlags.Public
也行 我值模糊的知道这是给定反射搜索范围的 那直接给个BindFlags.NonPublic 不就行了嘛 可事实会出错
这些参数是什么含义
另外反射的这个方法 其他几个参数又是什么含义 谢谢
wjq 2008-09-22
  • 打赏
  • 举报
回复
Type t = typeof(你的类);
MethodInfo m0 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { }, null);
MethodInfo m1 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(string) }, null);
MethodInfo m2 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(string), typeof(string) }, null);

110,533

社区成员

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

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

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