2011-04-04 89 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属性。