获取XML文档注释

时间:2018-08-03 06:53:53

标签: c# visual-studio-2015

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

在上面的代码示例中,有什么方法可以获取summary值。

我的目的是在日志中记录对象的动作,在这种情况下,我知道哪个类做了什么以及何时做的。

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

如果除了XML文档之外,还有其他可选的方式来描述类,那么我想听听。

谢谢

2 个答案:

答案 0 :(得分:2)

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

另一种解决方案可能是创建特殊属性which you can fill and read。像这样:

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

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

答案 1 :(得分: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();
}

例如GetDescription(typeof(MyClass))