You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7中如何获取C#属性的Summary注释信息?

在.NET7中获取C#属性的Summary注释方法

要获取C#类属性的Summary注释,核心思路是利用项目生成的XML文档文件,结合反射定位属性对应的注释节点,具体实现步骤如下:

1. 启用XML文档生成

首先需要配置项目,让编译时生成包含注释信息的XML文件:

  • 右键项目 → 属性 → 生成选项卡
  • 勾选“XML文档文件”,可保留默认路径$(OutputPath)$(AssemblyName).xml,确保XML文件最终和程序集输出在同一目录

2. 实现注释读取工具类

编写一个静态工具类,通过反射获取类型信息,再读取XML文档中对应的属性注释:

using System.Reflection;
using System.Xml.Linq;

public static class XmlDocHelper
{
    public static string GetPropertySummary(Type targetType, string propertyName)
    {
        // 获取目标类型所在程序集的XML文档路径
        var assembly = targetType.Assembly;
        var xmlFilePath = Path.ChangeExtension(assembly.Location, ".xml");
        
        if (!File.Exists(xmlFilePath))
            return string.Empty;

        // 加载XML文档并获取命名空间
        var doc = XDocument.Load(xmlFilePath);
        var xmlNs = doc.Root?.Name.Namespace;
        if (xmlNs == null)
            return string.Empty;

        // 构造属性的完整标识(XML中属性节点的name格式为P:类型全名.属性名)
        var propertyFullId = $"P:{targetType.FullName}.{propertyName}";
        
        // 匹配属性的注释节点(兼容自动属性的get/set子节点)
        var propertyNode = doc.Descendants(xmlNs + "member")
            .FirstOrDefault(m => 
            {
                var nodeName = m.Attribute("name")?.Value;
                return nodeName == propertyFullId 
                       || nodeName?.StartsWith($"{propertyFullId}.get_") == true 
                       || nodeName?.StartsWith($"{propertyFullId}.set_") == true;
            });

        // 提取并清理summary内容
        return propertyNode?.Descendants(xmlNs + "summary")
                           .FirstOrDefault()?.Value.Trim() ?? string.Empty;
    }
}

3. 使用示例

针对你提供的CDto类,调用工具类即可获取Name属性的注释:

var nameSummary = XmlDocHelper.GetPropertySummary(typeof(CDto), nameof(CDto.Name));
Console.WriteLine(nameSummary); // 输出:名称

注意事项

  • 确保XML文档文件与程序集文件处于同一目录,否则需要调整xmlFilePath的获取逻辑
  • 如果读取跨程序集类型的注释,需要加载对应程序集的XML文档
  • 自动属性的注释在XML文件中可能会生成get_Name和set_Name的子节点,工具类已兼容这种情况

内容的提问来源于stack exchange,提问作者ZhaiFanhua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 22:48:07