17

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

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

我不知道这些注释在编译代码后是否可用,但如果有的话,也许有办法在代码中获取它们。

提前感谢您的帮助。

4

6 回答 6

6

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

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

于 2009-02-26T20:00:03.553 回答
5

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

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

于 2009-07-07T04:48:18.853 回答
3

不,它们不能通过反射获得。请参阅msdn

XML 文档注释不是元数据;它们不包含在已编译的程序集中,因此无法通过反射访问它们。

于 2009-02-26T19:58:09.363 回答
3

您无法在运行时访问它们,因为它们被编译器视为注释。

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

请参阅创建自定义属性(C# 编程指南)了解属性创建和使用反射访问属性(C# 编程指南)了解运行时访问。

来自 MSDN 的示例:

作者.cs:

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

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

示例类.cs:

[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
    // H. Ackerman's code goes here...
}
于 2009-02-26T19:59:29.297 回答
1

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

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

于 2009-02-26T19:57:45.277 回答
0

不,这些注释不包含在您编译的程序集中。

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

于 2009-02-26T19:58:25.070 回答