如何解决如何使用反射调用带有可选参数的方法 c#
我正在使用反射调用方法。然而,由于某些要求,方法参数之一被更改,并将新参数保留为可选参数。 这是代码
Void Method1(string request,string constants,string count = null)
Void Method2(string request,string constants)
在 Method1 count 参数是可选。对于上述方法,我使用反射调用 这是代码:
result = methodInfo.Invoke(classInstance,new object[] {request,constants});
我尝试了以下方法,但出现异常
result = methodInfo.Invoke(classInstance,constants,System.Type.Missing});
Method2 出现以下异常,上述代码适用于 Method1
参数计数不匹配。
请建议我使用反射的方法中的可选参数
提前致谢!
解决方法
可选参数:实际上并不是可选的——所有发生的事情都是编译器通常会自动为您提供省略的值。由于您没有在此处使用编译器,因此您需要使用 new object[] {request,constants,null}
自己提供它。请注意,如果您想正确尊重默认值(而不是在这种情况下知道它是 null
),您需要查看 ParameterInfo
,特别是 .HasDefaultValue
和 {{ 1}}。
示例(不使用 .DefaultValue
,注意):
ParameterInfo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。