避免模​​糊的匹配异常

时间:2009-12-28 13:13:47

标签: c# reflection ambiguous-call

我通过反射在类型上调用静态方法 Parse ,因为我不知道编译时对象的类型(但我知道它有一个 Parse 方法,取一个字符串)。

但是,我得到一个模糊的匹配异常,大概是因为有很多重载的 Parse 方法,每个方法都占用一个对象(string,int,double等)。

如何在我的方法调用中更具体,以确保我达到正确的方法( Parse(string s))并且不抛出异常。

我的代码如下所示:

Type returnType = p.PropertyType;
object value = returnType.GetMethod("Parse").Invoke(null, new string[] { "1" });

2 个答案:

答案 0 :(得分:168)

使用this重载并使用

returnType.GetMethod("Parse", new [] {typeof(string)})

答案 1 :(得分:-5)

if (assembly != null)
{
  List<System.Reflection.MethodInfo> mInfo = new List<System.Reflection.MethodInfo>();
  Type myType = null;

  foreach (Type item in assembly.GetTypes())
  {
    mInfo.Clear();
    mInfo = item.GetMethods().ToList();
    foreach (System.Reflection.MethodInfo item2 in mInfo)
    {
      if (item2.Name == methodName)
      {
        Method = item2;
        break;
      }
    }
  }

  stateInstance = Activator.CreateInstance(myType);
}
return Method;