LoginSignup
1
1

More than 5 years have passed since last update.

[C#]ジェネリックメソッドの動的呼び出しについて

Posted at

やりたいこと

データベースからのオブジェクト取り込み、あるいはその書き込みに使用するための処理をループ化するための前研究

やったこと

  • リフレクションを使用したメソッドの動的取得
  • 取得したメソッドのジェネリックメソッド化
  • ジェネリックメソッドの実行

メソッドの動的取得

System.Reflection.MethodInfoを用いる。
クラスが持つメソッド名については私の知る範囲だとベタで用いなければならないというのが残念ではある。

GetMethodInfo
System.Reflection.MethodInfo methodInfo = Type.GetMethod(string methodName, BindingFlags flags);

メソッドのジェネリック化

単純にMethodInfo.GetGenericMethodメソッドに対して対応する型引数と対応する型情報の配列を引数として用いる

メソッドの実行

何気に引っかかる。
MethodInfo.Invokeメソッドは第1・第2引数ともにObject型(およびその配列)であるため何を入れても大体コンパイルエラーを起こさないためである。
第1引数にはインスタンスオブジェクトを、第2引数には実行時の引数として使用したいものを順番に投入する。
Staticだったり引数なしメソッドなら必要に応じてnullにする。

ソースコード

長くなったので全文はGitHubを見てほしい

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1