反射调用Method

GetMethod(string name)

在反射重载方法时,如果调用此重载方法,会产生发现不明确的匹配 的错误。

解决方案如下:

GetMethod("MethodName", new Type [] { typeof(参数类型)});

其中type数组中的项的个数是由要调用的方法的参数个数来决定的。

如果无参数,则new Type[]{},使Type数组中的项个数为0

 

例:GetMethod("get_Item", new Type [] { typeof(int)});

 

PS:

我们知道,引用类型的对象使用常规的赋值方式只是将对象指针赋给变量,但有些时候,我们希望赋值是赋一个副本而不是指针,那么可以用对象提供的类似Clone()方法来获取对象的浅副本,但一些对象并未提供类似的方法,那么我们可以用下面的方法来获取对象的浅副本:  

 

MethodInfo mi=typeof(object).GetMethod("MemberwiseClone",BindingFlags.NonPublic | BindingFlags.Instance);  return mi.Invoke(objectSource,null);   如果是自己定义的类,可以自己加入一个Clone方法:   Public myObject Clone()  {      return (myObject)base.MemberWiseClone();  }

 

posted on 2013-05-17 16:00  wanglgkaka  阅读(218)  评论(0编辑  收藏  举报

导航