1

私は現在のメソッドの例を持っています:

public void MethodName(string param1,int param2)
{
    object[] obj = new object[] { (object) param1, (object) param2 };
    //Code to that uses this array to invoke dynamic methods
}

現在実行中のメソッドのパラメーター値を取得してオブジェクト配列に配置する動的な方法 (リフレクションを使用して推測しています) はありますか? MethodBase と MethodInfo を使用してパラメーター情報を取得できることを読みましたが、それらにはパラメーターに関する情報しかなく、必要な値自体はありません。

たとえば、特定のパラメーターをコーディングせずにメソッド パラメーターとして "test" と 1 を渡すと、2 つのインデックス { "test", 1 } を持つオブジェクト配列を取得できますか?

サードパーティの API を使用する必要はありませんが、その API のソース コードがある場合は、それが巨大な API でなく、これなしで簡単な方法がない限り、それを回答として受け入れます。 API。

おそらくスタックを使用して、知っている方法があるはずです。皆さんは専門家であり、それが私がここに来る理由です。

事前に感謝します。これがどのように行われるかを見るのが待ちきれません。

編集

明確ではないかもしれないので、ここにいくつかの追加情報を示します。このコード例はまさにそれであり、私が望むものを示す例です。実際のコードを必要な場所に表示するには、肥大化して大きくなりますが、問題は、手動で配列を作成せずに配列を取得する方法です。特定のパラメーターをコーディングせずに、値を取得して配列に配置する方法が必要です。

4

1 に答える 1

2

リフレクションを使用すると、パラメーター名とメタデータを抽出できますが、実際の値は抽出できません。

  class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            p.testMethod("abcd", 1);
            Console.ReadLine();
        }

        public void testMethod(string a, int b)
        {
            System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
            StackFrame sf = st.GetFrame(0);
            ParameterInfo[] pis = sf.GetMethod().GetParameters();

            foreach (ParameterInfo pi in pis)
            {
                Console.Out.WriteLine(pi.Name);
            }
        }
    }
于 2012-08-31T15:37:05.940 に答える