我有一个的Util类不同的返回类型和参数不同的几种方法,FE:传递不同的方法为参数的方法名称来调用
int RealMethodToExecute(int i, string s) { ... }
这些方法必须在UI线程中调用和在调用看起来像:使用该方法的名称作为字符串是不是真的很漂亮
int x = (int)InvokeControl.Invoke("Util.RealMethodToExecute");
因为在我看来,我认为在以下解决方案:
0现在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仅acceppts有一个int和一个字符串参数和返回值的方法,但我有我想要执行不同的方法。
我不想超载调用方法。我只需要该函数的全限定名来执行它。
任何想法??
编辑:与参数
使用*名称*周围的调用是一个非常可怕的方法,但是:我可以澄清 - 你说的参数;如果你*提供了一个带参数的方法,你期望它从哪里得到参数值? –
扩展示例 – stefantinger
我不明白的是,如果您可以传递委托,为什么不调用普通方法呢? –