0

メソッド文字列名をリストのパラメーターとして他のクラスの MyFunction に送信します。今私はそれらをアクションのように使いたいです...どうすればそれらの名前をアクションに変換できますか.?

 public void MyFunction(List<string> Methodlist)
    {
        foreach (string Method in Methodlist)
        {
            Method(); 
        }

実際、お気に入りのメソッド名をクラスに送信して呼び出しています。最初はリフレクションを使用していました...しかし、クラスのパブリック変数にいくつかの値を割り当てています..そして、リフレクションが新しいインスタンスを作成すると、パブリック変数のすべてのデータが作成されます失われます。

4

4 に答える 4

1

AList<Action>は、リモート コードを実行するのに適したデータ型です。リフレクションを使用して名前からメソッドを取得できますが、関連するクラス インスタンスとメソッド パラメーターも必要になります。

アクション:

var actionList= new List<Action>();

actionList.Add(() => SomeAwesomeMethod());
actionList.Add(() => foo.MyOtherAwesomeMethod());
actionList.Add(() => bar.ThisWillBeAwesome(foo));

foreach(var action in actionList)
{
    action();
}

見る:Action

反射:

var methods = new List<string>();
methods.Add("SomeAwesomeMethod");

foreach(var item in methods)
{
    var method = this.GetType().GetMethod(item);
    method.Invoke(this, null);
}

見る:MethodInfo.Invoke

于 2013-09-19T13:18:33.203 に答える
-1

System.Reflection を使用する

インスタンスの作成: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx

Invok メソッド: http://msdn.microsoft.com/en-US/library/vstudio/a89hcwhh.aspx

于 2013-09-19T13:17:36.270 に答える