<分区>
我可以使用 Type.InvokeMember
通过反射调用一个方法,它看起来非常健壮,例如处理 param 数组参数。但出于某种原因,它不处理可选参数。
是否有更好的内置方法来调用考虑了可选参数的方法(可能使用 DLR)?
<分区>
我可以使用 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 });
关于c# - 通过反射调用带有可选参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977719/