2016年2月3日水曜日

c#で動的な関数呼び出し


using System;
using System.Reflection;

public class DynamicCall
{

  public static void TestMethod(int a,int b)
  {
System.Console.WriteLine("a="+a.ToString()+"  b="+b.ToString());
  }

  public  void TestMethod2()
  {
System.Console.WriteLine("test Method2");
  }

  public static void Main()
  {
DynamicCall dCall = new DynamicCall();
//型の取得
Type t = typeof(DynamicCall);
//メソッドの取得
MethodInfo mInfo = t.GetMethod("TestMethod");
//メソッド呼び出しstaticメソッドの場合は、nullでOK
mInfo.Invoke(null,new object[] {10,20});

//メソッドの取得
mInfo = t.GetMethod("TestMethod2");
//メソッド呼び出し通常メソッドの場合は、
//一番目の引数にインスタンス変数を渡す
mInfo.Invoke(dCall,null);

  }

}

0 件のコメント:

コメントを投稿