いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

リフレクション時にByRef(ref)の引数を指定する方法 (System.Reflection, System.Type.GetType)

リフクレクションを用いて、メソッド情報を取得する際にたまに引数がByRef(C#の場合はref)となっている
ものがあります。


このようなメソッド情報を取得する場合は、以下のようにします。

System.Type.GetType("System.Int32&")

上記のように型名にアンドをつけるとByRefになります。


以下、サンプルです。

//
// protected void SetPropertyValue(string, ref int, int)というメソッド情報を取得.
//
Type type = typeof(XXX);
BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Instance);
Type[] paramTypes = new Type[]{ typeof(string), Type.GetType("System.Int32&"), typeof(int)};

MethodInfo methodInfo = type.GetMethod("SetPropertyValue", flags, null, paramTypes, null);