次のシグネチャを持つメソッドを想像してください。
public void ExampleMethod(string id, object data,
ref object A, ref object B, ref object C)
{
//...
}
の値に応じて、 の値を、、または何もdata
割り当てない必要があります。要するに、もしそうならA
B
C
id
id == "A"
A = data;
問題は、このメソッドの本体が人間によって型付けされているのに、署名が実行時に生成されることです。このため、設計時に ref パラメーターがいくつあり、それらが何と呼ばれるかが不明であるため、ロジックをハードコーディングすることはできません。このコード片は、任意の数のメソッドに挿入でき、それぞれが異なる署名を持つ可能性があり、すべてのメソッドで機能する必要があります。
現在使用されているメソッドのすべてのパラメーターを取得する方法は知っていますが、これらのパラメーターの 1 つに値を割り当てる方法がわかりません。私が探しているのは、次のようなものです。
public void ExampleMethod(string id, object data,
ref object A, ???????, ref object Z)
{
MethodBase method = MethodBase.GetCurrentMethod();
foreach (ParameterInfo parameter in method.GetParameters())
{
if (id == parameter.Name)
{
// Problem: assign data to parameter.
return;
}
}
}