如何使用Reflection将构造函数作为MethodInfo获取

时间:2009-09-04 08:45:21

标签: c# .net reflection system.reflection

构造函数如下所示:

public NameAndValue(string name, string value)

我需要使用Reflection将其作为MethodInfo。它尝试了以下方法,但没有找到构造函数(GetMethod返回null)。

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

我做错了什么?

3 个答案:

答案 0 :(得分:9)

Type.GetConstructor。注意这会返回一个ConstructorInfo而不是MethodInfo,但它们都派生自MethodBase,因此大多数都是相同的成员。

答案 1 :(得分:5)

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

你应该在ConstructorInfo中拥有你需要的元素,我知道无法为构造函数获取MethodInfo。

善,

答案 2 :(得分:0)

我相信你唯一缺少的是正确的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