获取XML文档注释

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

在上面的代码示例中,有没有办法获取summary值。
我的目标是记录对象的操作日志,以此来知道哪个类在什么时候做了什么。
我可以通过this.GetType().Name获取类的名称,但在某些情况下,我需要任何与它相关的描述。
如果除XML文档之外还有其他获取类描述的方法,请让我知道。
谢谢。

1
你可以自己解析XML文件。我真的怀疑注释本身是否被编译和存储,以便你可以通过代码访问。 - undefined
有一些第三方解决方案可以从这些注释中编译帮助文件。但正如@Erndob所说,您也可以自己解析它们。 - undefined
2个回答

2
您无法通过反射获取XML文档,因为它不会生成到程序集中。它会生成到一个单独的XML文件中,您可以在应用程序中打开并阅读它。(分发可能是个问题,因为XML文件是在编译程序集后生成的,所以您无法将其作为资源包含在程序集本身中。)
另一种解决方案可能是创建一个特殊的属性,您可以填写和读取。类似于: which you can fill and read
[Summary("This can have any description of the class.")]
public class MyClass {}

那种解决方案的问题在于它不会生成文档XML,因此您没有智能感知等功能。

2

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

[Description("This can have any description of the class")]
public class MyClass {} 

您可以在运行时访问此属性的值:
public static string GetDescription(Type t) {
    return TypeDescriptor.GetAttributes(t)
        .OfType<DescriptionAttribute>()
        .Select(x => x.Description)
        .FirstOrDefault();
}

e.g. GetDescription(typeof(MyClass))


然后XML文档不再起作用了。所以就没有了智能感知,等等。 - undefined
如果你更看重这个功能(正如其他人所说),那么最好在运行时解析XML文档。我几年前写了一篇关于这个主题的文章:https://www.brad-smith.info/blog/archives/220 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接