使用“动态动作”参数创建方法
本文关键字:参数 创建 方法 动态动作 动态 使用 | 更新日期: 2023-09-27 18:20:41
嗨,有没有一种方法可以创建一个接受任何类型方法的方法?我的意思是它有任何类型的参数,或者它有多少参数
void SampleMethod(Action<dynamic> Action)
{
}
我现在做得很好,但我认为我做错了,有办法做到吗?无论它有一个参数、多个参数还是没有参数。
我是做错了还是错过了什么?
我试过这个代码
void SampleMethod(Action Action)
{
}
但它似乎只接受没有参数的方法我做错了吗?
我认为Delegate
就是您想要的。
static void A1() {
Console.Out.WriteLine("A1");
}
static void A2(int foo) {
Console.Out.WriteLine("A2");
}
static void SampleMethod(Delegate dlgt) {
}
用法:
SampleMethod(new Action(A1));
SampleMethod(new Action<int>(A2));
您可以通过DynamicInvoke
()调用该方法,但必须提供确切的参数列表。
static void SampleMethod(Delegate dlgt) {
// ok for A1, will throw an exception for A2
dlgt.DynamicInvoke(null);
}
带反射,
SampleMethod(this.GetType().GetMethod("WriteHello"), "Hello");
public void WriteHello(string param)
{
Debug.WriteLine(param);
}
public void SampleMethod(MethodInfo mi, params object[] arguments)
{
mi.Invoke(this,arguments);
}