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

时间:2012-04-02 13:50:31

标签: c# .net reflection optional-parameters

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

是否有更好的内置方法来调用考虑可选参数的方法(可能使用DLR)?

1 个答案:

答案 0 :(得分:5)

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

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 });