我代表......選擇委託我的方法,而不反射
private delegate double CalculateDelegate(double x, double y);
代碼declareing代表...
private CalculateDelegate calculate;
我使用的方法與我的代理...
private double Add(double x, double y) { return x + y; }
private double Subtract(double x, double y) { return x - y; }
我如何執行所需的方法...
calculate = new CalculateDelegate(Add);
或...
calculate = new CalculateDelegate(Subtract);
這工作,但作爲實際的代碼包含了更多的「功能」我想避免使用開關/ IF語句。因此,所有我需要的是寫新的方法將其發送。
的計算方法(我usied的行動在這裏想它可能工作,它不)
public double calc(Action methodName, double x, double y)
{
calculate = new CalculateDelegate(methodName);
return calculate(x,y);
}
我多麼想執行所需方法。
public void go()
{
calc(Add, 5,4);
}
這可能沒有反思嗎?
目前還不清楚你在問什麼。請詳細描述實際問題,並提供一個關於您的要求的真實而簡單的例子。 –
根據您應該選擇所需方法的標準? – Lou
你可以這樣做:'CalculateDelegate method = Add;' - 是不是你想要的?而'新的CalculateDelegate(X)' - X不僅僅是一個「方法名稱」,它是一種實際的方法,這就是所謂的「方法組轉換」。你必須提供一個實際的方法*,而不僅僅是一個名字。但不清楚爲什麼你不能簡單地使用我在本評論開始時給出的例子。 –