我在Util类中有几种方法,它们具有不同的返回类型和不同的参数,fe:
int RealMethodToExecute(int i, string s) { ... }
这些方法必须在 ui 线程中调用,调用看起来像这样:
int x = (int)InvokeControl.Invoke("Util.RealMethodToExecute");
因为在我看来,使用方法名称作为字符串并不是很漂亮,所以我想到了以下解决方案:
public int WrappedRealMethodToExecute(int i, string s)
{
return InvokeMethod(Util.RealMethodToExecute, i, s);
}
private static T InvokeMethod<T>(Func<int, string, T> func, params object[] p)
{
return (T)InvokeControl.Invoke(func.Method.DeclaringType.FullName + "." + func.Method.Name, p);
}
现在的问题是InvokeMethod只接受具有 int 和字符串参数和返回值的方法,但我有不同的方法要执行。
我不想重载InvokeMethod。我只需要函数的完整限定名来执行它。
有任何想法吗??
编辑:带参数的扩展示例