首页 > 解决方案 > 可以在 ApiMember 属性和 xmldoc 摘要注释中使用相同的描述吗?

问题描述

在我的 API 模型程序集中,我大量使用该ApiMember属性来为 Swagger UI 的属性提供描述,例如

public class FindVendorItems : IReturn<List<VendorItem>>, IGet
{
    [ApiMember(Descripton = Description.ItemId)]
    public int ItemId { get; set; }
}

描述是静态Description类中的常量字符串,因此它们可以在整个模型中使用以保持描述的一致性。

这对 Swagger 很有用,但我想解决的问题是将这些相同的描述放入 XML 文档注释的摘要标记中,以便它们在 Visual Studio 中可用和可见。我不想将常量中的描述复制/粘贴到摘要标签中,因为事实证明它容易出错,并且两者很快就会不同步。

public class FindVendorItems : IReturn<List<VendorItem>>, IGet
{
    /// <summary>
    /// Same Description.ItemId here
    /// </summary>
    [ApiMember(Descripton = Description.ItemId)]
    public int ItemId { get; set; }
}

有没有办法自动做到这一点?即使它在 Visual Studio 中不可见,只要生成生成的 XML 文件包含所有描述,这样就可以在使用由此生成的 NuGet 包时提供 IntelliSense。

标签: c#servicestack

解决方案


这是不可能的,因为执行 .NET 代码无权访问.xml包含开发工具和 IDE 可以访问的 XML API 文档的外部文件。

ServiceStack 支持动态添加属性,因此有可能使用一些外部代码生成工具来解析 XML 文档文件并生成 C# 代码以在启动时将文档属性动态添加到您的 DTO 类型。


推荐阅读