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