我正在VS 2005下用C#编写一个类库(我知道,现代化,但我们这里的预算很紧张)。
在我看来,如果我在XML文档中使用“summary”标记,我的用户可以通过Intellisense和工具提示等查看该信息,但不能在Studio的“属性”窗口中看到。
要在该窗口中获取内容,我似乎需要使用[Description("This is it")]
属性。
我对此是否正确?如果是这样,那么我似乎需要复制描述信息:-(
或者,有更好的方法吗?谢谢!
答案 0 :(得分:7)
是的,这是正确的。这两种方法的目的截然不同。
/// <summary></summary>
注释用于在编译时为您的项目生成XML文档,Visual Studio也会针对其IntelliSense数据库对其进行解析。
[DescriptionAttribute]
提供了设计器中使用的描述文本,最明显的是属性窗口的底部。
微软自己的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; }
答案 1 :(得分:2)
摘要XML doc标记和描述属性是两个完全不同的东西。
摘要标记用于组件的文档。
描述属性是contols组件模型的一部分,在运行时的 应用程序中可用。这意味着信息被编译到您的二进制程序集文件中。对于应用程序的最终用户,可能甚至可以看到描述属性的内容(例如,在使用PropertyGrid控件时)。
如果您要查找文档,请仅使用XML文档。如果您要创建可重用的组件,也可以使用Description属性。
答案 2 :(得分:0)
我的理解是你是对的。但是,您可以自动完成大部分工作by using GhostDoc,该工作有一个免费版本,您可以自定义该版本以添加到Description属性中。