У меня есть эта старый метод подпись, который я хочу принизить:определение Неоднозначного метода, но хочет сохранить обратную совместимость
[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