2010-03-19 42 views
6

我們向外部客戶提供了大量程序集,但並非所有的公共API都得到官方支持。例如,由於不太理想的設計選擇,有時候一個類型必須公開地從程序集公開暴露出來,以使其餘代碼能夠工作,但我們不希望客戶使用該類型。溝通缺乏支持的一部分不能以XML註釋的形式提供任何智能感知。在C#中選擇性地禁止XML代碼註釋?

有沒有辦法選擇性地禁止XML註釋?因爲這是一個長期的維護問題,所以我正在尋找其他方法,而不是忽略警告1591。

示例:我有一個包含公共類A和B的程序集。官方支持並且應該有XML文檔。 B不適合外部使用,不應記錄在案。我可以打開XML文檔,然後禁止警告1591.但是,當我後來添加官方支持的類C時,我希望編譯器告訴我,我搞砸了,但無法添加XML文檔。如果我在項目層面壓制了1591個,這不會發生。我想我可以在整個課程中使用#pragma,但似乎應該有更好的方法來做到這一點。

回答

3

根本不提供智能感知如何?

///<summary>A documentation</summary> 
public class A { } 

///<summary>B documentation. This class is not supported...</summary> 
[EditorBrowsable(EditorBrowsableState.Advanced)] 
public class B { } 

///<summary>C documentation</summary> 
public class C { } 

這樣,你仍然可以記錄不支持類(內部用戶也很重要!),並有外部用戶無法看到它們在智能感知。在內部,您可以啓用visual studio來「查看」這些高級構造。爲EditorBrowsableAttribute的頁面告訴我們如何:

在Visual C#中,您可以在高級屬性出現在智能感知和屬性窗口下的工具隱藏高級成員設置控制|選項|文本編輯器| C#。相應的EditorBrowsableState是高級的。

5

製作此類方法internal,並將[assembly: InternalsVisibleTo("AssemblyName")]屬性添加到暴露它們的裝配中。

+0

唉我正在處理大量的代碼,所以這是不實際的。 – 2010-03-19 02:10:16

+3

@Mike Post如果不是那麼你有很多重構要做,那麼從你的私人API保持你的公共API應該是你的第一關注點。對此沒有一個快速的解決方案,John所建議的實際上是一個整潔,不知道你可以暴露內部方法到其他*朋友*程序集。 – 2011-04-18 15:42:03

2

嘗試使用#pragma指令至enable or disable specific warnings

///<summary>some documentation</summary> 
public class A{ 
    //... 
} 

#pragma warning disable 1591 
public class B{ 
    //... 
} 
3
通信缺乏支持XML 評論的形式不提供任何 智能感知的

一部分。

你能否評論,而不是一個簡單的<總結>不能外用這些方法。 < /概要>留言?