2009-09-04 14 views
13

を使用してMETHODINFOとしてコンストラクタを取得するためにどのようにコンストラクタは次のようになります。リフレクション

public NameAndValue(string name, string value) 

私はリフレクションを使用してMETHODINFOとしてそれを取得する必要があります。次のように試しましたが、コンストラクタ(GetMethodnullを返します)が見つかりません。

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

私が間違って何をしているのですか?

答えて

9

Type.GetConstructor。これはMethodInfoではなくConstructorInfoを返しますが、どちらもMethodBaseから派生しているため、ほとんど同じメンバを持ちます。

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

ConstructorInfoに必要な要素が必要ですが、コンストラクタのMethodInfoを取得する方法はわかりません。

優しさ、

ダン

+0

私はすでにConstructorInfoを取得する方法を知っていましたが、私はMethodBaseだけが必要ですが、MethodInfoが必要だと思っていました。あなたの答えをありがとう。 –

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 
関連する問題