我们有一个帮助程序集,帮助开发人员记录日志信息。用于记录的特定方法有两个签名:
LogToULS(string message)
LogToULS(string message, Microsoft.Sharepoint.Administration.SPDiagnosticsCategory category)
在我的应用程序中,我创建了一个静态类,其中包含我希望在应用程序记录某些内容时使用的SPDiagnosticsCategory实例。如果使用第一个签名,则会分配一个通用类别,并且很难找到特定于此应用程序的记录信息。
我的问题是,是否可以强制人们在从此应用程序调用{{1}}的任何时候使用第二个签名,或者是否需要通过程序员教育来完成?
答案 0 :(得分:4)
如果您无法从代码库中删除该方法,则可以将其标记为已弃用,以便其他程序员在调用它时会收到编译器警告(并且IntelliSense将警告其使用):
[Obsolete("Use LogToULS(string, SPDiagnosticsCategory) instead."]
public void LogToULS(string message)
{
// ...
}
根据ObsoleteAttribute
documentation,您可以将true
作为第二个参数传递给其构造函数,以导致编译器错误(不仅仅是警告),但这可能会破坏现有代码。
答案 1 :(得分:0)
将第一个重载定义为:
public void LogToULS(string message)
{
LogToULS(message, genericErrorCodeHere);
}
然后,使 Resharper 内联此方法,以便更新所有现有的呼叫站点。接下来,删除旧的,过时的重载。