ロギングを行う 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」のような名前に変更する必要がありますか?