Подтвердить что ты не робот

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

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

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

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

Мой код выглядит следующим образом:

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

Ответ 1

Используйте this перегружать и использовать

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

Ответ 2

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;