0

私は次のような100のメソッドを持っています

    public void function1() {}
    public void function2() {}
    ....
    public void function100() {}

問題は、これらの関数を1つずつ呼び出さずに呼び出すにはどうすればよいですか? または、次のような文字列から関数を呼び出すにはどうすればよいですか:

    string S = "TheFunction"+x.Tostring()+"()";
4

2 に答える 2

0

あなたのメソッドはどのクラスにありますか? 次のように、クラス内のメソッドの配列を取得できます。

MethodInfo[] methods = typeof(YourClassNameHere).GetMethods();

次に、ループして呼び出すことができます:

String baseName = "function";
foreach(var item in methods) {
   //Check name
    if (item.Name.SubString(0, baseName.Length) == baseName) {
       item.Invoke(classInstanceOfYourClass,null);
    }
}

classInstanceOfYourClassこれを実行しているクラスのオブジェクト インスタンスです。invoke の 2 番目のパラメーター (私は に設定null) は、メソッドに引数を渡すためのものです。を渡すnullと、メソッドに引数がないことを意味します。

于 2015-04-15T01:12:21.493 に答える
0

あなたの質問に対する答えはリフレクションです。この回答のコードを見ることができますReflection: How to Invoke Method with parameters .

于 2015-04-15T01:14:40.520 に答える