簡體   English   中英

傳遞不同的方法作為參數以按方法名稱調用

[英]Pass different methods as parameter to invoke by method name

class with different return types and different parameters, 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);
}

only acceppts methods with an int and a string parameter and a return value but i have different methods which i want to execute. 現在的問題是僅接受具有int和字符串參數以及返回值的方法,但是我有不同的方法要執行。

. 我不想重載 我只需要函數的全限定名即可執行它。

有任何想法嗎??

編輯:帶參數的擴展示例

Fankly,這也可能僅僅是:

private static object InvokeMethod(Delegate method, params object[] args)
{            
    return InvokeControl.Invoke(method, args);
}

InvokeControl.Invoke使用的位置(進入UI線程):

someControl.Invoke(method, args);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM