У меня есть несколько приложений на С#, которые выполняют протоколирование, а метод вывода имеет перегрузку, чтобы принять сообщение и StreamWriter, а другая перегрузка с дополнительным параметром для массива params. Пример сигнатур метода:
private static void Output(string message, StreamWriter writer, params object[] args)
{..}
private static void Output(string message, StreamWriter writer)
{..}
Вопрос касается Resharper, который дает следующее предупреждение для этих методов: " Метод с дополнительным параметром скрыт при перегрузке".
Предупреждение вводит в заблуждение, потому что я вызываю перегрузку с двумя параметрами из 3-х перегрузок параметров и не приводит к рекурсивному вызову, поэтому перегрузка не скрыта.
Я провел некоторое исследование на сайте Resharper, и в этом выпуске были открыты некоторые билеты, которые были закрыты как "не исправить".
Мне кажется, что это допустимый прецедент, так как среда выполнения знает, какая перегрузка для вызова. Также есть примеры в .NET framework, где они используют такие перегрузки.
Например, StreamWriter.WriteLine()
имеет перегрузки для значения для записи, а также Format params
.
Является ли это допустимым аргументом или мои методы будут переименованы в нечто вроде "OutputFormat", поскольку за кулисами они используют string.Format для построения строки с указанными параметрами?