/// <summary>
/// This can have any description of the class
/// </summary>
public class MyClass {}
在上面的代码示例中,有什么方法可以获取summary
值。
我的目的是在日志中记录对象的动作,在这种情况下,我知道哪个类做了什么以及何时做的。
我可以从this.GetType().Name
获取类的名称,但是在某些情况下,我需要将任何描述与之关联。
如果除了XML文档之外,还有其他可选的方式来描述类,那么我想听听。
谢谢
答案 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))