我正在通过反射调用一个类型上的静态方法Parse,因为我不知道编译时对象的类型(但我知道它有一个接受字符串参数的Parse方法)。
然而,我遇到了一个模糊匹配异常,可能是因为有很多重载的Parse方法,每个方法都接受单个对象(例如字符串、整数、双精度等)。
我该如何在方法调用中更具体,以确保我可以访问正确的方法(Parse(string s)),并且不会引发异常。
我的代码看起来像这样:
Type returnType = p.PropertyType;
object value = returnType.GetMethod("Parse").Invoke(null, new string[] { "1" });
new [] { typeof(string) }
,除了代码维护方面还存在其他问题。类型就在那里明明白白地写着。此外,“疯狂的一行式”与此无关,您偏好的风格只会在这一行中添加冗余字母。我认为new Type[] {...}
不如原始写法易读,因为它使这一行变得更长,并且包含了无关的信息/模板/噪音。因此:这只是一种风格问题,而你却以一种消极攻击的方式开始了这场讨论:“如果能迎合我的口味,我会点赞”。 - Benjamin Podszunpublic static explicit double(MyType obj)
和public static explicit float(MyType obj)
。您仍将面临AmbiguousMatchException
异常。在这种情况下,您可以使用returnType.GetMethods().SingleOrDefault(m => m.Name == "op_Explicit" && m.ReturnType == typeof(float))
来解决问题。 - Guillaume