2

我们有一个辅助程序集,可帮助开发人员记录信息。用于记录的具体方法有两个签名:

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

在我的应用程序中,我创建了一个包含 SPDiagnosticsCategory 实例的静态类,我希望在应用程序记录某些内容时使用该实例。如果使用第一个签名,则会分配一个通用类别,并且更难找到特定于该应用程序的记录信息。

我的问题是,是否可以强制人们在任何时候LogToULS从此应用程序调用第二个签名,或者这是否需要通过程序员教育来完成?

4

2 回答 2

4

如果您无法从代码库中删除该方法,则可以将其标记为已弃用,因此其他程序员在调用它时会收到编译器警告(并且 IntelliSense 会警告它的使用):

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

根据ObsoleteAttribute文档,您可以将true其作为第二个参数传递给其构造函数以导致编译器错误(不仅仅是警告),但这可能会破坏现有代码。

于 2012-06-05T21:29:29.430 回答
0

将第一个重载定义为:

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

然后,使Resharper内联此方法,以便更新所有现有的呼叫站点。接下来,删除旧的、过时的重载。

于 2012-06-05T21:34:19.363 回答