Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中使用文档属性#_C#_.net_Attributes_Documentation - Fatal编程技术网

C# 在C语言中使用文档属性#

C# 在C语言中使用文档属性#,c#,.net,attributes,documentation,C#,.net,Attributes,Documentation,在中,他们使用Author作为属性的示例: [Author("Jane Programmer", Version = 2), IsTested()] class Order { // add stuff here ... } 在我看来,这是一个好主意,因为它允许您使用反射按作者对类进行分组(例如)——有效地将文档中通常包含的元数据公开给编译器,这可能很有用。我立即想到“啊哈!我应该为我的所有内联块文档使用属性”-例如: 然而,我所能找到的关于文档和属性的信息似乎都不支持这种方法。它们都

在中,他们使用
Author
作为属性的示例:

[Author("Jane Programmer", Version = 2), IsTested()]
class Order
{
    // add stuff here ...
}
在我看来,这是一个好主意,因为它允许您使用反射按作者对类进行分组(例如)——有效地将文档中通常包含的元数据公开给编译器,这可能很有用。我立即想到“啊哈!我应该为我的所有内联块文档使用属性”-例如:

然而,我所能找到的关于文档和属性的信息似乎都不支持这种方法。它们都使用XML进行内联文档


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

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

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

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

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


这方面的需要需要需要解决办法。“文件”的需求是什么。也许问题不对?

为了完整起见,在测试项目中,您可以:

[TestProperty(“Author”, “Ducky”)] 
public void SomeTest()
{
       ...
} 
您可以为常规代码扩展这种方法。 我宁愿不评论理论问题。
也就是说,也许可以创建使用存储库提取特定文件/类/方法的所有“作者”/“编辑器”的脚本。

有很多库和包处理XML文档。您真的需要通过反射来查找这些信息吗?为什么不将众所周知的xml文档和一些源代码版本控制结合起来(svn正显示已经完成的工作)?在您的情况下,如果两个开发人员更改了相同的方法/类,会怎么样?IMO,这不是一个好主意,因为您通常不需要运行时的文档。XML文档已经够难看的了,这种方法会更难看。尝试想象一种更复杂的方法,其中描述由几个段落组成。这看起来有什么特点?我不需要,看起来更整洁。更不用说它更漂亮了。C#中注释的XML表示法非常难看。比PHPDoc更糟糕。为什么C不使用
/***/
语法而不是愚蠢的
//
?而且,XML已经死了。@ZdeslavVojkovic我同意XML是丑陋的。你觉得这更难看吗?我不太确定。您可以使用
@“
多行字符串。C#程序员已经习惯于阅读C#代码(而不是XML)。但也许你可以用这个方法来描述作者和参数,而不是描述?当然,运行时开销不是很大。这将是编译时,如果有什么…我仍然不确定长文本块的格式实际上是任何更糟的。我同意你关于在版本控制中保留作者信息的观点,但这是关于记录什么而不是如何记录的问题——这种方法对于参数仍然有用。其他的论点仅仅是关于当前的支持,这就是承认C#的进化中有一种自上而下的控制结构,但我认为你是对的,这不是一场我可能赢的战争。我永远也不会正确地记录我的课程,因为创造如此丑陋的东西让我心碎。哦,好吧,那么你应该寻求解决你内心的问题;-)正确的文件首先是一个纪律问题。格式是第二位的。然而,摆脱XML注释是一场艰苦的战斗。也许您可以从获取诸如ReSharper之类的帮助程序插件开始,以使键入XML注释更容易。例如,当您有一大组控制台命令时,您可以将命令的描述存储在属性中,并为MyApp--help提取这些描述。@Tomas是的,我也在使用这种技术。但是,在您的情况下,它是应用程序文档,而不是源代码文档。
[TestProperty(“Author”, “Ducky”)] 
public void SomeTest()
{
       ...
}