2024年4月20日发(作者:)

.net 反射调用方法

在 .NET 框架下,反射(Reflection)是一种强大的工具,它可以让程序在运行时动

态地提取类型(Type)信息以及访问和执行类型相关的成员(例如方法、字段和属性等)。

本文将介绍如何使用反射机制调用方法。

1. 获取方法信息

使用反射获取方法信息的第一步是定位到该方法所在的类型。可以使用如下代码获取

某个类型:

```

Type type = typeof(MyClass);

```

其中,MyClass 是我们要调用方法的类名,可以根据实际情况进行替换。

```

MethodInfo methodInfo = hod("MethodName");

```

其中,MethodName 是该方法的名称,可以根据实际情况进行替换。如果该方法属于

某个类的基类,则可以使用 GetMethod 方法的第二个参数获取该方法所属的类型:

其中,BindingFlags 枚举值指定了方法的查找方式,包括实例方法、公共方法和非

公共方法等。在这里,我们列举了几个常用的 BindingFlags 值,可以根据实际情况进行

选择:

- ce: 实例方法

- : 静态方法

- : 公共方法

- lic: 非公共方法

获取方法信息之后,我们可以使用 Invoke 方法调用该方法:

其中,instance 是该方法所属的对象,parameters 是一个 object 数组,表示该方

法的参数列表。如果该方法是静态方法,则 instance 可以为 null。

Invoke 方法会返回该方法的返回值,类型为 object。如果该方法返回的是值类型,

可以使用 方法将其转换为对应的值类型。

3. 示例

下面是一个简单的示例,演示如何使用反射调用方法:

```

using System;

using tion;

public class MyClass

{

private int _count;

private int Add(int value)

{

_count += value;

return _count;

}

// 创建 MyClass 的实例

object instance = Instance(type, 10);

ine("result: {0}", result); // 输出 result: 15

// 获取 GetCount 方法

MethodInfo getCountMethod = hod("GetCount",

ce | );

该示例中,首先使用反射获取了 MyClass 的类型信息,并创建了一个 MyClass 的实

例。然后,获取了 Add 和 GetCount 两个方法,并使用 Invoke 方法调用了这两个方法,

并打印了结果。