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

标签 c# .net reflection optional-parameters

<分区>

我可以使用 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/

相关文章:

.net - ASP.NET Web 表单 HTML 标记中的自定义属性

java - 在Java中获取包装类类型的简单方法

java - 在Java中动态加载一个类并调用一个方法

c# - 来自其基类的传递构造函数

c# - 有人可以为我分解这个 lambda 表达式吗?

c# - 如何在没有 ServiceHost 类的情况下使用 WCF 创建简单的 Web 服务器?

java - 需要在运行时用动态生成和编译的java .class文件替换运行时现有的类

c# - 用于在代码隐藏中启用/禁用文本框的 ASP.NET 复选框

c# - 如何通过 VSIX 安装程序安装 xsd?

c# - 如何将包含十六进制对的字符串转换为字节?