通过反射调用具有可选参数的方法

本文关键字:参数 方法 反射 调用 | 更新日期: 2023-09-27 18:29:48

我可以使用Type.InvokeMember通过反射调用一个方法,它看起来非常健壮,例如处理param数组参数。然而,由于某些原因,它不处理可选参数。

有没有更好的内置方法来调用一个考虑了可选参数的方法(可能使用DLR)?

通过反射调用具有可选参数的方法

在下面的例子中,我们调用一个带有两个参数的函数,但不返回任何值。第二个参数是可选的。

MethodInfo mi = default(MethodInfo);
// Loading the assembly  
Assembly reflectionAssemby = Assembly.LoadFile(@"C:'RelectionDLL.dll");
// Get type of class from loaded assembly 
Type reflectionClassType = reflectionAssemby.GetType("ReflectionDLL.ReflectionClass");
// Create instance of the class 
object objReflection = Activator.CreateInstance(reflectionClassType);
mi = reflectionClassType.GetMethod("pub_Inst_NoReturn_Function");
mi.Invoke(objReflection, new object[] { value1, Type.Missing });