2012-06-05 33 views
2

我们有一个帮助开发者记录信息的帮助程序集。用于记录的具体方法有两个特征:可能强制在应用程序中使用特定的方法签名?

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

在我的应用程序创建一个包含我想SPDiagnosticsCategory实例的静态类中使用的应用程序日志的东西任何时候。如果使用第一个签名,则会分配一个通用类别,并且很难找到特定于此应用程序的记录信息。

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

+1

刚刚从您的API中删除第一个功能的任何问题? – Tigran

+0

它仍然在其他项目中使用,仍然有它的地方,只是不在这个特定的项目。 –

+0

在这种情况下,如果你有一个兼容性问题,恐怕没有任何其他解决方案,然后只是教育...... – Tigran

回答

4

如果不能从代码库中删除的方法,你可以将其标记为弃用,因此其他程序员得到一个编译器警告时,他们把它叫做(和智能感知会警告反对它的用法):

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

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

0

定义第一个过载为:

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

然后,使ReSharper的内嵌此方法,以便所有现有的呼叫网站得到更新。接下来,删除旧的,过时的过载。

相关问题