在 C# 中,Invoke()
是一个用于调用方法的方法,它能够在运行时动态地调用一个方法。
Invoke()
方法的使用方式有两种:
- 通过
MethodInfo
对象调用:
using System.Reflection;
namespace ConsoleApp_Invoke
{
public class Program
{
static void Main(string[] args)
{
MethodInfo openMethodInfo = typeof(MyStore).GetMethod("Open");
openMethodInfo.Invoke(new MyStore(), null); // 如果调用的方法参数为空,则第二个参数为null
MethodInfo sellMethodInfo = typeof(MyStore).GetMethod("Sell");
sellMethodInfo.Invoke(new MyStore(), new object[] { "苹果", 10 }); // 如果调用的方法有参数,则第二个参数传递一个参数数组
}
}
public class MyStore
{
public void Open()
{
Console.WriteLine("早上商店进行开张了");
}
public void Sell(string Name, int count)
{
Console.WriteLine($"出售{count}件{Name}");
}
}
}
在上面的示例中,我们首先通过 typeof(MyStore).GetMethod("MyMethod")
获取了 Open
方法的 MethodInfo
对象,然后使用 Invoke()
方法调用该方法。
Invoke()
方法接受两个参数:
-
第一个参数是要调用方法的对象实例,如果方法是静态的,则可以传递
null
; -
第二个参数是方法的参数数组,如上面我们调用Sell方法。
- 通过委托调用:
Action<string> myDelegate = new MyClass().MyMethod; // 创建委托对象
myDelegate.Invoke("Hello"); // 调用委托
在上面的示例中,我们首先创建了一个 Action<string>
委托对象,并将其初始化为 MyMethod
方法,然后使用 Invoke()
方法调用委托。与第一种方式相比,这种方式更加简洁,但使用委托调用方法需要确保委托的签名与要调用的方法的签名匹配。
无论使用哪种方式,Invoke()
方法都可以用于调用方法并传递参数。文章来源:https://www.toymoban.com/news/detail-629690.html
需要注意的是,Invoke()
方法的调用可能会引发 TargetException
、MethodAccessException
、TargetInvocationException
等异常,所以在实际使用中应该进行异常处理。文章来源地址https://www.toymoban.com/news/detail-629690.html
到了这里,关于C#中的Invoke的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!