1

今日のインタビュー (ジュニア Web 開発者) で、インタビュアーは私にこの質問をしました:

名前が文字列の場合にメソッドを実行する方法 (javascript および C# で)

答えられません:(

今検索すると、この質問が見つかりまし

しかし、これをC#でどのように行うのですか??

4

3 に答える 3

6

メソッドの名前だけを持っている場合は、.net Relfectionそのメソッドを実行するためだけに使用できます。

チェック:MethodBase.Invokeメソッド(Object、Object [])

また

例 :

class Class1
   {
    public int AddNumb(int numb1, int numb2)
    {
      int ans = numb1 + numb2;
      return ans;
    }

  [STAThread]
  static void Main(string[] args)
  {
     Type type1 = typeof(Class1); 
     //Create an instance of the type
     object obj = Activator.CreateInstance(type1);
     object[] mParam = new object[] {5, 10};
     //invoke AddMethod, passing in two parameters
     int res = (int)type1.InvokeMember("AddNumb", BindingFlags.InvokeMethod,
                                        null, obj, mParam);
     Console.Write("Result: {0} \n", res);
   }
  }
于 2012-05-14T06:01:36.087 に答える
2

タイプがあると仮定すると、リフレクションを使用して、その名前でメソッドを呼び出すことができます。

class Program
{
    static void Main()
    {
        var car = new Car();
        typeof (Car).GetMethod("Drive").Invoke(car, null);
    }
}

public class Car
{
    public void Drive()
    {
        Console.WriteLine("Got here. Drive");
    }
}

呼び出すメソッドにパラメーターが含まれている場合は、引数をオブジェクト配列Invokeとしてメソッドシグネチャと同じ順序で渡すことができます。

var car = new Car();
typeof (Car).GetMethod("Drive").Invoke(car, new object[] { "hello", "world "});
于 2012-05-14T06:04:40.830 に答える
2

良い記事。よくお読みください。文字列だけでなく、多くのシナリオからメソッドを呼び出すことができます。

http://www.codeproject.com/Articles/19911/Dynamically-Invoke-A-Method-Given-Strings-with-Met

その名前がパラメータとして来た共有関数を呼び出す方法

于 2012-05-14T06:06:05.773 に答える