2009-09-04 6 views
13

Der Konstruktor sieht wie folgt aus:Wie Konstruktor als Method erhalten Reflection mit

public NameAndValue(string name, string value) 

Ich brauche es als Method Reflexion mit zu bekommen. Es hat Folgendes versucht, aber es findet den Konstruktor nicht (GetMethod gibt null zurück).

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

Was mache ich falsch?

Antwort

9

Type.GetConstructor. Beachten Sie, dass dies eine ConstructorInfo anstelle einer MethodInfo zurückgibt, aber beide stammen von MethodBase ab und haben daher meistens die gleichen Member.

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

Sie sollten die Elemente haben Sie in der ConstructorInfo brauchen, ich weiß von keiner Weise obwohl ein Method für einen Konstruktor zu bekommen.

Güte,

Dan

+0

Ich wusste bereits, wie man die ConstructorInfo, aber ich dachte, ich brauchte MethodInfo, während nur MethodBase erforderlich war. Danke für deine Antwort. –

0

Ich glaube, das einzige, was Sie war die richtige Binding fehlten. Ich gebe in diesem Beispiel keine Parametertypen an, aber Sie können dies tun.

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