上传者: 38743054
|
上传时间: 2024-07-03 09:44:28
|
文件大小: 50KB
|
文件类型: PDF
C# 反射调用方法示例
C# 反射是指在运行时获取类的信息和调用类的成员的技术。反射是一种允许用户获得类信息的 C# 功能,Type 对象映射它代表的底层对象。在 .Net 中,一旦获得了 Type 对象,就可以使用 GetMethods() 方法获取此类型支持的方法列表。
GetMethods() 方法有两种形式:
1. MethodInfo[] GetMethods()
2. MethodInfo[] GetMethods(BindingFlags bindingflas)
第一个形式不带参数,返回当前类型所有的方法信息,包括继承自基类的方法。
第二个形式带有一个 BindingFlags 参数,该参数是一个枚举类型,用于过滤方法信息。BindingFlags 枚举成员有:
* DeclaredOnly:只包括当前类型声明的方法,不包括继承自基类的方法。
* Instance:只包括实例方法,不包括静态方法。
* Public:只包括公共方法,不包括私有方法。
例如,使用以下代码可以获取 MyClass 类的所有公共实例方法:
```csharp
MethodInfo[] mi = t.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public);
```
在上面的代码中,我们使用 BindingFlags.DeclaredOnly、BindingFlags.Instance 和 BindingFlags.Public 枚举成员来过滤方法信息,只获取 MyClass 类的公共实例方法。
在获取方法信息后,可以使用 foreach 循环遍历 MethodInfo 数组,获取每个方法的信息,例如方法的返回值类型和方法名称。
```csharp
foreach (MethodInfo m in mi)
{
Console.Write(" " + m.ReturnType.Name + " " + m.Name + " (");
}
```
在上面的代码中,我们使用 foreach 循环遍历 MethodInfo 数组,获取每个方法的返回值类型和方法名称,然后打印出来。
在实践中,反射调用方法示例可以应用于动态加载类库、动态调用方法、动态获取类的信息等场景。例如,在插件式架构中,可以使用反射来动态加载插件库和调用插件方法。
在本文中,我们使用了一个简单的 MyClass 示例类,该类有多个方法,例如 Sum、IsBetween、Set 和 Show 等。我们使用反射来获取 MyClass 类的方法信息,并打印出来。
C# 反射调用方法示例是一个非常有用的技术,可以帮助我们在运行时获取类的信息和调用类的成员。