C# 获取XML文档注释 // ///这可以有类的任何描述 /// 公共类MyClass{}

C# 获取XML文档注释 // ///这可以有类的任何描述 /// 公共类MyClass{},c#,visual-studio-2015,C#,Visual Studio 2015,在上面的代码示例中,是否有任何方法可以获得summary值 在这种情况下,我的目标是在日志中记录对象的操作,在这样的上下文中,我知道什么类做了什么,什么时候做了什么 我可以从this.GetType().Name中获取类的名称,但在某些情况下,我需要将任何描述与之关联 如果除了XML文档之外,还有其他方法可以对类进行描述,那么我想听听 谢谢,您无法从反射中获取XML文档,因为它没有生成到程序集中。它生成一个单独的XML文件,您可以打开该文件并从应用程序中读取。(分发可能是一个问题,因为XML文件

在上面的代码示例中,是否有任何方法可以获得
summary

在这种情况下,我的目标是在日志中记录对象的操作,在这样的上下文中,我知道什么类做了什么,什么时候做了什么

我可以从
this.GetType().Name
中获取类的名称,但在某些情况下,我需要将任何描述与之关联

如果除了XML文档之外,还有其他方法可以对类进行描述,那么我想听听


谢谢,

您无法从反射中获取XML文档,因为它没有生成到程序集中。它生成一个单独的XML文件,您可以打开该文件并从应用程序中读取。(分发可能是一个问题,因为XML文件是在编译程序集之后生成的,所以不能将其作为资源包含在程序集本身中。)

另一种解决方案可能是创建特殊属性。比如:

/// <summary>  
///  This can have any description of the class  
/// </summary>  
public class MyClass {} 

该解决方案的问题在于它不会生成文档XML,因此您没有IntelliSense等功能。

您无法从反射中获取XML文档,因为它不会生成到程序集中。它生成一个单独的XML文件,您可以打开该文件并从应用程序中读取。(分发可能是一个问题,因为XML文件是在编译程序集之后生成的,所以不能将其作为资源包含在程序集本身中。)

另一种解决方案可能是创建特殊属性。比如:

/// <summary>  
///  This can have any description of the class  
/// </summary>  
public class MyClass {} 

该解决方案的问题在于它不会生成文档XML,因此您没有IntelliSense等功能。

如果您不想使用XML注释,可以使用
[description]
属性将描述存储为元数据,即:

[Summary("This can have any description of the class.")]
public class MyClass {}
然后,您可以在运行时访问此属性的值:

[Description("This can have any description of the class")]
public class MyClass {} 
公共静态字符串GetDescription(类型t){
返回TypeDescriptor.GetAttributes(t)
第()类
.选择(x=>x.Description)
.FirstOrDefault();
}

e、 g.
GetDescription(typeof(MyClass))

如果不想使用XML注释,可以使用
[description]
属性将描述存储为元数据,即:

[Summary("This can have any description of the class.")]
public class MyClass {}
然后,您可以在运行时访问此属性的值:

[Description("This can have any description of the class")]
public class MyClass {} 
公共静态字符串GetDescription(类型t){
返回TypeDescriptor.GetAttributes(t)
第()类
.选择(x=>x.Description)
.FirstOrDefault();
}

e、 g.
GetDescription(typeof(MyClass))

您可以自己解析xml文件。我真的怀疑这些注释本身是否经过编译和存储,以供您通过代码访问。有一些第三方解决方案,可以根据这些注释编译帮助文件。但是正如@Erndob所说的,您可以自己解析它们,也可以自己解析xml文件。我真的怀疑这些注释本身是否经过编译和存储,以供您通过代码访问。有一些第三方解决方案,可以根据这些注释编译帮助文件。但是正如@Erndob所说的,您可以自己解析它们,然后XML文档就不起作用了。所以没有IntelliSense,等等。如果您更重视该功能(正如其他人所说),那么最好在运行时解析XML文档。几年前我写了一篇关于这个主题的文章:然后XML文档就不再有效了。所以没有IntelliSense,等等。如果您更重视该功能(正如其他人所说),那么最好在运行时解析XML文档。几年前我写了一篇关于这个主题的文章: