是否可以在运行时获取类摘要?

时间:2009-02-26 19:54:13

标签: c# reflection class comments summary

是否可以在C#中获取运行时的类摘要? 我想通过反射获取课程摘要,然后将其写入控制台。 通过类摘要,我的意思是在类定义之前的摘要注释,如下所示:

/// <summary>
/// some description
/// </summary>
class SomeClass
{
}

我不知道在编译代码后这些注释是否可用,但是如果它们可能有一种方法可以在代码中获取它们。

提前感谢您的帮助。

6 个答案:

答案 0 :(得分:6)

我曾经对这一段时间搞砸了,并使用了这个家伙解决方案。工作得很好:

http://jimblackler.net/blog/?p=49

答案 1 :(得分:5)

我在CodePlex上维护Jolt.NET项目,并实现了执行此任务的功能。有关详细信息,请参阅Jolt库。

本质上,库允许您使用System.Reflection中的元数据类型(即MethodInfoPropertyInfo等以编程方式查找和查询程序集的XML文档注释文件。 )。

答案 2 :(得分:3)

不,他们通过反思无法获得。见msdn

  

XML文档注释不是元数据;   它们不包括在编译中   装配,因此他们不是   通过反思可以获得。

答案 3 :(得分:3)

您无法在运行时访问这些文件,因为这些文件被编译器视为注释。

但是,如果您想使用属性来指定信息并在运行时通过反射访问它,那么您可以这样做。

有关属性创建的信息,请参见Creating Custom Attributes (C# Programming Guide),有关运行时访问权限,请参见Accessing Attributes With Reflection (C# Programming Guide)

来自MSDN的示例:

Author.cs:

public class Author : System.Attribute
{
    private string name;
    public double version;

    public Author(string name)
    {
        this.name = name;
        version = 1.0;
    }
}

SampleClass.cs:

[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
    // H. Ackerman's code goes here...
}

答案 4 :(得分:1)

如果您发出XML文档文件,则可以。该过程将涉及使用反射来获取该类型的所有公共成员,然后使用XPath,从生成的XML文档中读取文档。

更新:要在您的dll / exe中包含XML文档,只需将其添加为嵌入式资源,如果文档更改,则编译两次。

答案 5 :(得分:0)

不,这些评论不包含在已编译的程序集中。

Visual Studio可以在输出文件夹(\ bin \ your_project.xml)中创建一个包含这些注释的.xml文件。如果您的应用程序与该xml文件一起分发,那么您将能够以编程方式访问它。