不明确的条目 System.Reflection

Ambiguous Entry System.Reflection

我在通过 system.reflection:

解析方法时遇到错误

System.Reflection.AmbiguousMatchException

typeof(Graphics).GetMethod("DrawRectangle").Invoke(g, new object[] {
     Pens.Red, new Rectangle(200, 200, 100, 50)
});

但是当我通过编译器解析它时效果很好

g.DrawRectangle(Pens.Red, new Rectangle(200,200,100,50));

有没有办法指定我想调用哪个方法?

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

typeof(Graphics).GetMethod("DrawRectangle", new[] {typeof(Pen), typeof(Rectangle)})

DrawRectangle 有不同的重载。

尝试这样的事情。

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);