想象一个拥有以下签名的方法:
public void ExampleMethod(string id, object data,
ref object A, ref object B, ref object C)
{
//...
}
data
中的值需要根据id
的值被赋给A
、B
、C
或无值。简而言之,如果id == "A"
,则A = data;
问题在于该方法的主体是由人类键入的,但签名是在运行时生成的。因此,不可能硬编码逻辑,因为在设计时不知道会有多少ref参数以及它们的名称。这段代码可以插入任意数量的方法中,每个方法都有不同的签名,而且必须在每个方法中工作。我知道如何获取当前方法的所有参数,但我无法弄清如何将值赋给其中一个参数。我要找的是像以下示例一样的东西:
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;
}
}
}