2011-04-04 86 views
3

我在VS 2005下編寫了一個C#類庫(我知道,現代化,但我們的預算很緊張)。描述屬性與<summary>屬性標記

在我看來,如果我在XML文檔中使用「摘要」標籤,我的用戶可以通過智能感知和工具提示等查看該信息,但不能在Studio的屬性窗口中看到該信息。

要在該窗口中獲得某些內容,我似乎需要使用[Description("This is it")]屬性。

我正確嗎?如果是這樣,那麼它似乎是我需要複製:-(

的描述信息或者,有沒有更好的辦法?謝謝!

+0

謝謝大家,這就是我認爲的......不一定是我想要的;-) – John66NY 2011-04-05 12:42:46

+0

如果你真的想要消除重複,可以考慮將所有的字符串放到一個資源文件中。然後,您可以簡單地從資源文件中提取字符串值,而不是直接將其寫入代碼中。如果這對你很重要,它也使本地化變得更容易。我在下面的答案中忽略了這一點。如果您發現它是缺失的鏈接,我很樂意添加它。 – 2011-04-06 06:34:44

回答

6

是的,這是正確的。這兩種方法都非常不同的目的。

  • /// <summary></summary>意見被用來生成XML文檔,爲您的項目在編譯時,它也由Visual Studio其智能感知數據庫進行解析。

  • [DescriptionAttribute] provid es在設計器中使用的描述文本,最顯着的是在屬性窗口的底部。

微軟自己的Windows窗體庫裏散佈着這兩者。

我不知道有什麼辦法可以合併這兩個,但是考慮一下你是否真的想讓他們與正好一樣。在我自己的類庫中,我經常希望在設計器中顯示稍微不同的信息,而不是將其包含在我的技術文檔中。

舉一個簡單的例子,我可能想在這個財產是不是在Windows的某些版本支持的設計師清楚,但貶謫這個信息給<remarks>節中我的技術文檔:

/// <summary> 
/// Gets or sets a value indicating whether a shield should be displayed 
/// on this control to indicate that process elevation is required. 
/// </summary> 
/// <remarks> 
/// The elevation-required shield is only supported under Windows Vista 
/// and later. The value of this property will be ignored under earlier 
/// operating systems. 
/// </remarks> 
[Category("Appearance")] 
[Description("Displays a shield to indicate that elevation is required. " + 
      "(Only applies under Windows Vista and later.)")] 
public bool ShowShield { get; set; } 
0

我的理解是你是對的。但是,您可以自動執行大多數此項工作by using GhostDoc,該工作有一個免費版本,您可以自定義該版本以添加到「描述」屬性中。

1

摘要XML文檔標籤和描述屬性是兩個完全不同的東西

摘要標籤用於組件文檔

的描述屬性是contols組件模型的一部分,並且是可用在運行時該應用程序。這意味着信息會被編譯到您的二進制程序集文件中。說明屬性的內容可能對應用程序的最終用戶甚至可見(例如,在使用PropertyGrid控件時)。

如果您正在查找文檔,請使用XML文檔。如果你想創建一個可重用的組件,你也可以使用Description屬性。