如何动态调用具有可选参数的方法
本文关键字:参数 方法 调用 何动态 动态 | 更新日期: 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)。。。等等。