10

MSDN 属性教程中,他们Author用作属性的示例:

[Author("Jane Programmer", Version = 2), IsTested()]
class Order
{
    // add stuff here ...
}

在我看来,这似乎是一个好主意,因为它允许您使用反射来按作者(例如)对类进行分组——有效地将通常在文档中的元数据暴露给编译器,这可能很有用。我立刻想到“啊哈!我应该为我的所有内联块文档使用属性” - 例如:

[Author("Me")]
[Description("Add 1 to value")]
[Param("value", "The original value to add 1 to")]
public int AddOne(value) {return value + 1;}

但是 我找不到关于文档和属性 答案似乎都暗示了这种方法。他们都将 XML 用于内联文档。

是否有任何内置属性来帮助内联文档?如果没有,是否有任何库/包包含内联文档的预定义属性集

4

3 回答 3

5

将文档保存在属性中的一些缺点:

  • 长文本格式不佳;
  • Visual Studio 插件不支持(例如使用 ReSharper 的文档预览功能);
  • 第三方文档生成工具不支持;
  • 在组件中包含文档,这大大简化了逆向工程;
  • 源代码中的元数据与存储在版本控制系统中的元数据重复(当 VCS 为您提供更精确的信息时,跟踪源代码中任何声明的作者和版本是没有意义的 - VCS 不会撒谎)。

我现在想不出有什么好处。如果我真的需要它,总是可以解析 XML 文档注释并将整个代码库转换为任何属性形式。

于 2012-10-01T10:02:47.853 回答
3

这里的问题似乎是“什么是文档?”。如果您感兴趣的“东西”需要通过反射来访问,那么您对属性的隐含解决方案就是一个解决方案。但是,如果意图是使用标准文档工具来构建文档,那么就不是这样了。

这里的需要寻求解决方案。需要什么“文档”。也许是错误的问题?

于 2012-10-01T10:10:37.760 回答
0

只是为了完整起见,在测试项目中你可以这样做:

[TestProperty(“Author”, “Ducky”)] 
public void SomeTest()
{
       ...
} 

您可以将该方法扩展到常规代码。我宁愿不对理论问题发表评论。也就是说,也许可以创建使用存储库提取特定文件/类/方法的所有“作者”/“编辑者”的脚本。

于 2012-10-12T12:27:27.110 回答