c# GetMethod()方法参数
时间: 2023-10-23 08:11:53 浏览: 50
C#中的GetMethod()方法可以用来获取类型中特定方法的MethodInfo对象。它有两种重载形式:
1. GetMethod(String):根据方法名称获取MethodInfo对象;
2. GetMethod(String, BindingFlags):根据方法名称和绑定标志获取MethodInfo对象。
其中,第一个参数表示方法名称,第二个参数表示绑定标志,它是一个枚举类型,可以指定搜索方法的访问级别、静态/实例方法等信息。常用的绑定标志包括:Public、NonPublic、Static、Instance等。
相关问题
GetMethod types 参数含义
C#中GetMethod()方法的第二个参数是BindingFlags类型的,它是一个枚举类型,用于指定搜索方法的绑定标志。常用的绑定标志有以下几种:
1. Public:指定搜索公共方法;
2. NonPublic:指定搜索非公共方法,包括私有、受保护、内部等;
3. Instance:指定搜索实例方法;
4. Static:指定搜索静态方法;
5. FlattenHierarchy:指定搜索继承链中的方法;
6. ExactBinding:指定只搜索与指定参数类型精确匹配的方法;
7. IgnoreCase:指定搜索时忽略方法名称的大小写。
BindingFlags参数可以使用“按位或”运算符(|)组合多个绑定标志。例如,使用BindingFlags.Public | BindingFlags.Instance可以搜索公共实例方法。
C#动态方法调用
在C#中,可以使用反射来实现动态方法调用。具体步骤如下:
1. 获取需要调用的方法的MethodInfo对象。可以使用Type类的GetMethod方法来获取指定名称和参数类型的方法。
2. 创建一个对象实例或者获取静态方法所在的类的Type对象。
3. 使用MethodInfo.Invoke方法来调用方法,传递需要调用的对象实例或者静态方法所在的类的对象,以及方法的参数。
以下是一个示例代码:
```csharp
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
// 获取方法的MethodInfo对象
MethodInfo method = typeof(Program).GetMethod("SayHello");
// 创建对象实例或获取静态方法所在的类的Type对象
object obj = new Program();
// 调用方法
method.Invoke(obj, new object[] {"World"});
}
public void SayHello(string name)
{
Console.WriteLine("Hello, " + name + "!");
}
}
```
以上代码会输出:Hello, World!