[c#] Избегание исключения неоднозначной ссылки



Answers

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

Я вызываю статический метод. Разбор по типу через отражение, потому что я не знаю тип объекта во время компиляции (я знаю, однако, он имеет метод Parse , беря строку).

Тем не менее, я получаю исключение неоднозначного соответствия, предположительно потому, что существует много перегруженных методов Parse, каждый из которых принимает один объект (строка, int, double и т. Д.).

Как я могу быть более конкретным в моем вызове метода, чтобы обеспечить правильный метод ( Parse (string s) ), и исключение не выбрасывается.

Мой код выглядит так:

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





Related