0

文字列があり、この文字列をコードに変換する必要があります。

string s = "Method1";
string s_1 = "()";
s = s + s_1;
switch ((irrelevant))
{
    case 1:      
       (i need the string to code here to enable the Mehod1)
       break;
}

void Method1()
{
}

これを行う方法はありますか?

4

1 に答える 1

1

リフレクションを使用すると、名前だけで(括弧なしの名前で)名前でメソッドを呼び出すことができます。

名前でメソッドを実行する必要がある場合は、このソリューションを受け入れる必要があります

たとえば、メソッドが名前付きMethod1の同じクラスで名前が付けられている場合ClassWithMethods

Type type = typeof(ClassWithMethods);
MethodInfo methodInfo = type.GetMethod("Method1");
result = methodInfo.Invoke(this, null);

インボークの最初のパラメーターは同じインスタンスを実行しているため、これを使用しますが、このパラメーターはメソッドまたはコンストラクターを呼び出すオブジェクトを要求します。メソッドが静的な場合、この引数は無視されます。コンストラクターが静的である場合、この引数は null であるか、コンストラクターを定義するクラスのインスタンスである必要があります

于 2013-08-14T21:46:21.960 に答える