2012-06-05 85 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的內嵌此方法,以便所有現有的呼叫網站得到更新。接下來,刪除舊的,過時的過載。

相關問題