2011-06-23 9 views
0

可変数のparamsを持つ関数のParameterInfoを取得するにはどうすればよいですか?私はのsendDataのparameterInfoではなく、O1とO2オブジェクトを取得することができます可変数のparamsを持つ関数のParameterInfoを取得するには?

MyFunction(object o1, out object o2); 

メソッドを呼び出すとき 問題があります。

protected object[] MyFunction(params object[] sendData) 
{ 
    StackTrace callStack = new StackTrace(0, false); 
    StackFrame callingMethodFrame = callStack.GetFrame(0); 
    MethodBase callingMethod = callingMethodFrame.GetMethod(); 
    ParameterInfo[] parametersInfo = callingMethod.GetParameters(); 

    List<object> inParams = new List<object>(); 
    List<object> outParams = new List<object>(); 

    for (int i = 0; i < sendData.Length; i++) 
    { 
     object value = sendData[i]; 
     ParameterInfo info = parametersInfo[parametersInfo.Length - sendData.Length + i]; 

     if (info.IsOut) 
     { 
       outParams.Add(value); 
     } 
     else 
     { 
       inParams.Add(value); 
     } 
    } 
    .......... 
} 

ご協力いただきありがとうございます。

アルノー

答えて

2

「params」は単なるC#構文的な砂糖です。実際、メタデータの.NETレベルでは、特定の"ParamArray"属性セットを持つ "sendData"という名前のパラメータが1つしかありません。

+0

私はparamsオブジェクトを使うことができるので、o1とo2が出力パラメータであるかどうかを知ることはできないとお考えですか? – BobyFish

+0

@BobyFish - いいえ、私はあなたがしたいことを理解しようとしています。実際には、MyFunction(オブジェクトo1、オブジェクトo2)はコンパイルされません:-) –

+0

お元気ですか!私はどこに問題があるのか​​理解しています。あなたの答えサイモンに感謝します。 – BobyFish

関連する問題