首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >歧义条目System.Reflection

歧义条目System.Reflection
EN

Stack Overflow用户
提问于 2020-06-24 12:08:57
回答 2查看 55关注 0票数 1

当Im通过system.reflection解析方法时,im得到一个错误:

System.Reflection.AmbiguousMatchException

代码语言:javascript
复制
typeof(Graphics).GetMethod("DrawRectangle").Invoke(g, new object[] {
     Pens.Red, new Rectangle(200, 200, 100, 50)
});

但是,当im通过编译器解析它时,它工作得很好。

代码语言:javascript
复制
g.DrawRectangle(Pens.Red, new Rectangle(200,200,100,50));

是否有一种方法可以指定我要调用的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-24 12:14:44

Graphics.DrawRectangle有3种不同的重载,因此不可能通过GetMethod仅按名称找到具体的重载,您可以在GetMethod调用中为所需的重载指定参数类型:

代码语言:javascript
复制
typeof(Graphics).GetMethod("DrawRectangle", new[] {typeof(Pen), typeof(Rectangle)})
票数 3
EN

Stack Overflow用户

发布于 2020-06-24 12:18:17

对于DrawRectangle,有不同的重载。

试试这样的东西。

代码语言:javascript
复制
var args = new object[] { Pens.Red, new Rectangle(200, 200, 100, 50) };
 var r = 
 typeof(Graphics).GetMethod("DrawRectangle",System.Type.GetTypeArray(args));
 r.Invoke(g, args);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62554693

复制
相关文章

相似问题

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