Как получить конструктор как MethodInfo с помощью Reflection

Конструктор выглядит так:

public NameAndValue(string name, string value)

Мне нужно получить его как MethodInfo с помощью Reflection. Он пробовал следующее, но конструктор не нашел (GetMethod возвращает null).

MethodInfo constructor = typeof(NameAndValue).GetMethod(".ctor", new[] { typeof(string), typeof(string) });

Что я делаю неправильно?

Ответы

Ответ 1

Type.GetConstructor. Обратите внимание, что это возвращает ConstructorInfo, а не MethodInfo, но они оба выводятся из MethodBase, поэтому имеют в основном одни и те же члены.

Ответ 2

ConstructorInfo constructor = typeof(NameAndValue).GetConstructor
        (new Type[] { typeof(string), typeof(string) });

У вас должны быть необходимые элементы в ConstructorInfo, но я не знаю, как получить MethodInfo для конструктора.

Доброта,

Dan

Ответ 3

Я считаю, что единственное, чего вам не хватало, это правильные BindingFlags. Я не указываю типы параметров в этом примере, но вы можете это сделать.

var typeName = "System.Object"; // for example
var type = Type.GetType(typeName);
var constructorMemberInfos = type.GetMember(".ctor", BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
// Note that constructorMemberInfos will be an array of matches