您有没有办法创建一种接受任何方法的方法?我的意思是它有任何类型的参数或它有多少参数
void SampleMethod(Action<dynamic> Action)
{
}
我目前正在这样做,但我认为我做错了有没有办法做到这一点?是否有参数或多个参数。
我做错了还是我错过了什么?
我试过这段代码
void SampleMethod(Action Action)
{
}
但它似乎只接受没有参数的方法 我做错了吗?
答案 0 :(得分:1)
我认为Delegate
正是您所寻找的。 p>
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);
}
答案 1 :(得分:1)
使用Reflection,
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);
}