2009-09-04 28 views
13

El constructor tiene el siguiente aspecto:Como llegar constructor como MethodInfo usando Reflexión

public NameAndValue(string name, string value) 

necesito conseguirlo como MethodInfo utilizando la reflexión. Probó lo siguiente, pero no encontró el constructor (GetMethod devuelve null).

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

¿Qué estoy haciendo mal?

Respuesta

9

Type.GetConstructor. Tenga en cuenta que esto devuelve un ConstructorInfo en lugar de un MethodInfo, pero ambos derivan de MethodBase, por lo que tienen la mayoría de los mismos miembros.

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

Usted debe tener los elementos que necesita en el ConstructorInfo, sé de ninguna manera de conseguir un MethodInfo para un constructor sin embargo.

Bondad,

Dan

+0

ya sabía cómo sacar el ConstructorInfo, pero pensé que necesitaba MethodInfo, mientras que sólo se requería MethodBase. Gracias por tu respuesta. –

0

Creo que la única cosa que faltaban eran los BindingFlags correctas. No especifico tipos de parámetros en este ejemplo, pero puede hacerlo.

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