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

本文关键字:参数 方法 调用 何动态 动态 | 更新日期: 2023-09-27 18:24:33

我需要你的帮助。

是否可以使用c#执行以下操作?

我有一个方法

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

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

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

感谢

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

您可以使用反射:

  • 获得通过所有三种参数类型的MethodInfo
  • 获取运行时参数值
  • 调用GetParameters()MethodInfo获取参数元数据ParameterInfo'[']
  • 对于每个丢失的参数,检查HasDefaultValue,如果是,则获取DefaultValue
  • 将一个默认值数组附加到传入的值数组中
  • 将结果数组传递给使用反射获得的方法

将参数读入变量中,并根据找到的数量调用SomeMethod。例如,如果p1的值有效,请调用SomeMethod(p1);p1和p2的有效值,SomeMethod(p1,p2)。。。等等。