我在使用带有可选参数的C#4.0时遇到了另一个问题。
我如何调用ConstructorInfo不需要任何参数的函数(或更确切地说,是拥有对象的构造函数)?
ConstructorInfo
这是我现在使用的代码:
type.GetParameterlessConstructor() .Invoke(BindingFlags.OptionalParamBinding | BindingFlags.InvokeMethod | BindingFlags.CreateInstance, null, new object[0], CultureInfo.InvariantCulture);
(我刚刚尝试过使用BindingFlags)。
BindingFlags
GetParameterlessConstructor是我为编写的自定义扩展方法Type。
GetParameterlessConstructor
Type
根据MSDN,要使用默认参数,您应该传递Type.Missing。
Type.Missing
如果您的构造函数具有三个可选参数,则可以传递三个元素的对象数组,而不是传递一个空的对象数组,每个元素的值是Type.Missing,例如
type.GetParameterlessConstructor() .Invoke(BindingFlags.OptionalParamBinding | BindingFlags.InvokeMethod | BindingFlags.CreateInstance, null, new object[] { Type.Missing, Type.Missing, Type.Missing }, CultureInfo.InvariantCulture);