Ответ 1
Type.GetConstructor. Обратите внимание, что это возвращает ConstructorInfo, а не MethodInfo, но они оба выводятся из MethodBase, поэтому имеют в основном одни и те же члены.
Конструктор выглядит так:
public NameAndValue(string name, string value)
Мне нужно получить его как MethodInfo с помощью Reflection. Он пробовал следующее, но конструктор не нашел (GetMethod
возвращает null
).
MethodInfo constructor = typeof(NameAndValue).GetMethod(".ctor", new[] { typeof(string), typeof(string) });
Что я делаю неправильно?
Type.GetConstructor. Обратите внимание, что это возвращает ConstructorInfo, а не MethodInfo, но они оба выводятся из MethodBase, поэтому имеют в основном одни и те же члены.
ConstructorInfo constructor = typeof(NameAndValue).GetConstructor
(new Type[] { typeof(string), typeof(string) });
У вас должны быть необходимые элементы в ConstructorInfo, но я не знаю, как получить MethodInfo для конструктора.
Доброта,
Dan
Я считаю, что единственное, чего вам не хватало, это правильные 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