22

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

4

1 に答える 1