如何动态调用带有可选参数的方法?

时间:2014-09-25 14:32:44

标签: c# .net reflection methods default-value

我需要你的帮助。

是否可以使用c#?

执行以下操作

我有一个方法

void SomeMethod(int p1 = 0, bool p2 = true, string p3 = "")
{
    // some code
}

我需要在编译时使用未知数量的参数调用此方法。我的意思是在运行时,应用程序应该从xml(例如)加载有关参数的信息,并使用这些参数调用该方法。 Xml文件可能包含0到3个参数。

如何使用从xml加载的未知数量的参数调用 SomeMethod 方法?

谢谢

2 个答案:

答案 0 :(得分:6)

你可以使用反射来做到这一点:

  • 获取MethodInfo传递所有三种参数类型。
  • 获取运行时参数值
  • 通过调用MethodInfo
  • GetParameters()获取参数元数据ParameterInfo\[\]
  • 对于每个缺少的参数,请检查HasDefaultValue,然后抓住DefaultValue(如果
  • 将一组默认值附加到传入的值数组中。您将拥有一个包含三个对象的数组
  • 将结果数组传递给使用反射获得的方法。

答案 1 :(得分:0)

读入变量的参数,并根据找到的数量,调用SomeMethod。例如,如果您有p1的有效值,请调用SomeMethod(p1); p1和p2的有效值,SomeMethod(p1,p2)......依此类推。