我有,我想貶低這個老方法簽名:曖昧方法定義,但要保持向後兼容性
[Obsolete("This method has been replaced with one that uses an arguments object")]
public static T PollUntilReady<T>(
Func<T> functionThatMight503,
double minPollInterval = 0d,
double maxPollInterval = double.MaxValue,
double maxPollTotalTime = double.MaxValue);
我要與使用參數參數的更具有前瞻性的變化來代替這這可能會在未來被添加的各種選項:
public static T PollUntilReady<T>(
Func<T> functionThatMight503,
PollingOptions pollingOptions = null);
,如果沒有指定任何選項的問題是,編譯器會抱怨,該方法調用是不明確的。 (「以下方法之間的調用是模糊的...」)
有沒有什麼辦法可以解決這個問題,而不會破壞向後兼容性,重命名新函數或損害新方法的靈活性(可選選項對象)?
將'null'作爲'pollingOptions'參數傳遞。 – DavidG
最簡單的方法可能是_not_不具有'pollingOptions'作爲可選參數。相反提供一個'PollingOptions.Default'對象或類似的東西,所以它仍然很容易調用。 – MAV