gpt4 book ai didi

c# - 通过反射调用带有可选参数的方法

转载 作者:IT王子 更新时间:2023-10-29 03:47:09 25 4
gpt4 key购买 nike

我在使用带有可选参数的 C# 4.0 时遇到了另一个问题。

我如何调用一个我知道它不需要任何参数的函数(或者更确切地说是一个构造函数,我有 ConstructorInfo 对象)?

这是我现在使用的代码:

type.GetParameterlessConstructor()
.Invoke(BindingFlags.OptionalParamBinding |
BindingFlags.InvokeMethod |
BindingFlags.CreateInstance,
null,
new object[0],
CultureInfo.InvariantCulture);

(我刚刚尝试使用不同的 BindingFlags)。

GetParameterlessConstructor 是我为Type 编写的自定义扩展方法。

最佳答案

根据 MSDN , 要使用默认参数,您应该传递 Type.Missing

如果您的构造函数具有三个可选参数,那么您将传递一个三元素对象数组,而不是传递一个空对象数组,其中每个元素的值为 Type.Missing,例如

type.GetParameterlessConstructor()
.Invoke(BindingFlags.OptionalParamBinding |
BindingFlags.InvokeMethod |
BindingFlags.CreateInstance,
null,
new object[] { Type.Missing, Type.Missing, Type.Missing },
CultureInfo.InvariantCulture);

关于c# - 通过反射调用带有可选参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com