能否在 ApiMember 属性和 xmldoc 摘要注释中使用相同的描述?
Can you use the same description in the ApiMember attribute and xmldoc summary comment?
在我的 API 模型组件中,我大量使用 ApiMember
属性来为 Swagger UI 的属性提供描述,例如
public class FindVendorItems : IReturn<List<VendorItem>>, IGet
{
[ApiMember(Descripton = Description.ItemId)]
public int ItemId { get; set; }
}
描述是静态 Description
class 中的常量字符串,因此它们可以在整个模型中使用以保持描述的一致性。
这对 Swagger 非常有效,但我想解决的问题是将相同的描述添加到 XML 文档注释的摘要标签中,以便它们在 Visual Studio 中可用和可见.我不想 copy/paste 从常量到摘要标签的描述,因为它被证明容易出错并且两者很快就会失去同步。
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。
这是不可能的,因为执行 .NET 代码无法访问包含开发工具和 IDE 可以访问的 XML API 文档的外部 .xml
文件。
ServiceStack 支持 dynamically adding attributes 因此有可能使用一些外部代码生成工具来解析 XML 文档文件并生成 C# 代码以在启动时将文档属性动态添加到您的 DTO 类型.
我想出了一个解决方案。我对模型中的所有类型和成员(请求和响应 DTO)使用了 XML 文档注释,然后编写了一个自定义 ApiDeclarationFilter
来解析 XML 文档文件并替换描述和Open API 响应中的摘要属性与 XML 文档中的属性。
为了 re-use 跨类型和成员的描述,我将 XML 文档放在一个单独的 XML 文件中,并使用以下方法引用相应的成员:
/// <include file='../XmlDocs.xml' path='members/member[@name="MyPropertyName"]/*' />
在我的 API 模型组件中,我大量使用 ApiMember
属性来为 Swagger UI 的属性提供描述,例如
public class FindVendorItems : IReturn<List<VendorItem>>, IGet
{
[ApiMember(Descripton = Description.ItemId)]
public int ItemId { get; set; }
}
描述是静态 Description
class 中的常量字符串,因此它们可以在整个模型中使用以保持描述的一致性。
这对 Swagger 非常有效,但我想解决的问题是将相同的描述添加到 XML 文档注释的摘要标签中,以便它们在 Visual Studio 中可用和可见.我不想 copy/paste 从常量到摘要标签的描述,因为它被证明容易出错并且两者很快就会失去同步。
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。
这是不可能的,因为执行 .NET 代码无法访问包含开发工具和 IDE 可以访问的 XML API 文档的外部 .xml
文件。
ServiceStack 支持 dynamically adding attributes 因此有可能使用一些外部代码生成工具来解析 XML 文档文件并生成 C# 代码以在启动时将文档属性动态添加到您的 DTO 类型.
我想出了一个解决方案。我对模型中的所有类型和成员(请求和响应 DTO)使用了 XML 文档注释,然后编写了一个自定义 ApiDeclarationFilter
来解析 XML 文档文件并替换描述和Open API 响应中的摘要属性与 XML 文档中的属性。
为了 re-use 跨类型和成员的描述,我将 XML 文档放在一个单独的 XML 文件中,并使用以下方法引用相应的成员:
/// <include file='../XmlDocs.xml' path='members/member[@name="MyPropertyName"]/*' />