2

開発者が情報をログに記録するのを支援するヘルパー アセンブリがあります。ロギングに使用される特定の方法には、次の 2 つの署名があります。

LogToULS(string message)
LogToULS(string message, Microsoft.Sharepoint.Administration.SPDiagnosticsCategory category)

私のアプリケーションでは、アプリケーションが何かをログに記録するたびに使用したい SPDiagnosticsCategory のインスタンスを含む静的クラスを作成しました。最初の署名が使用されると、一般的なカテゴリが割り当てられ、このアプリケーションに固有のログ情報を見つけるのが難しくなります。

私の質問は、LogToULSこのアプリケーションから呼び出されるたびに 2 番目の署名を使用するように人々に強制することが可能かどうか、またはプログラマー教育を通じてこれを達成する必要があるかどうかです。

4

2 に答える 2

4

コードベースからメソッドを削除できない場合は、非推奨としてマークすることができます。これにより、他のプログラマーが呼び出すたびにコンパイラの警告が表示されます (IntelliSense はその使用に対して警告します)。

[Obsolete("Use LogToULS(string, SPDiagnosticsCategory) instead."]
public void LogToULS(string message)
{
    // ...
}

ObsoleteAttributeドキュメントに従って、2 番目のパラメーターとしてコンストラクターに渡しtrueて、コンパイラ エラー (警告だけでなく) を引き起こすことができますが、これにより既存のコードが破損する可能性があります。

于 2012-06-05T21:29:29.430 に答える
0

最初のオーバーロードを次のように定義します。

public void LogToULS(string message)
{
    LogToULS(message, genericErrorCodeHere);
}

次に、Resharperでこのメソッドをインライン化して、既存のすべての呼び出しサイトが更新されるようにします。次に、古い古いオーバーロードを削除します。

于 2012-06-05T21:34:19.363 に答える