我有一些执行日志记录的 C# 应用程序,并且 Output 方法具有接受消息和 StreamWriter 的重载,以及带有 params 数组的附加参数的另一个重载。方法签名的一个示例是:
private static void Output(string message, StreamWriter writer, params object[] args)
{..}
private static void Output(string message, StreamWriter writer)
{..}
问题涉及 Resharper,它为这些方法提供以下警告:“带有可选参数的方法被重载隐藏”。
该警告具有误导性,因为我从 3 参数重载内部调用 2 参数重载并且它不会导致递归调用,因此不会隐藏重载。
我在 Resharper 网站上进行了一些研究,在这个问题上已经打开了一些票,这些票已被关闭为“无法修复”。
在我看来,这是一个有效的用例,因为运行时知道要调用哪个重载。.NET 框架中也有使用此类重载的示例。
例如,StreamWriter.WriteLine()
具有要写入的值的重载,还有Format params
.
这是一个有效的参数,还是应该将我的方法重命名为“OutputFormat”之类的东西,因为他们在幕后使用 string.Format 来构建具有指定参数的字符串?