2009-09-04 5 views
13

Il costruttore si presenta così:Come arrivare costruttore come MethodInfo utilizzando la riflessione

public NameAndValue(string name, string value) 

ho bisogno di ottenere come un MethodInfo utilizzando la riflessione. Ha provato quanto segue, ma non trova il costruttore (GetMethod restituisce null).

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

Cosa sto sbagliando?

risposta

9

Type.GetConstructor. Nota che restituisce ConstructorInfo piuttosto che MethodInfo, ma entrambi derivano da MethodBase, quindi hanno per lo più gli stessi membri.

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

Si dovrebbe avere gli elementi necessari nella ConstructorInfo, so di un modo per ottenere un MethodInfo per un costruttore però.

Gentilezza,

Dan

+0

sapevo già come ottenere il ConstructorInfo, ma ho pensato che avevo bisogno MethodInfo, mentre è stato richiesto solo MethodBase. Grazie per la tua risposta però. –

0

credo l'unica cosa che ti mancava erano le BindingFlags corretti. Non specificherò i tipi di parametri in questo esempio, ma puoi farlo.

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