gpt4 book ai didi

asp.net - Swashbuckle 重命名模型中的数据类型

转载 作者:行者123 更新时间:2023-12-01 00:49:35 24 4
gpt4 key购买 nike

我正在整理一个需要匹配外部源 XML 格式的 Web API,并希望在 swagger 输出中重命名数据类型对象。

它在类的成员上运行良好,但我想知道是否也可以覆盖类名。

例子:

[DataContract(Name="OVERRIDECLASSNAME")]
public class TestItem
{
[DataMember(Name="OVERRIDETHIS")]
public string toOverride {get; set;}
}

在生成的输出中,我最终看到
模型:
   TestItem {
OVERRIDETHIS (string, optional)
}

我希望看到

覆盖类名称 {
OVERRIDETHIS(字符串,可选)
}

这可能吗?

谢谢,

最佳答案

我有同样的问题,我想我现在解决了。

首先在 Swagger 配置中添加 SchemaId(从版本 5.2.2 开始,参见 https://github.com/domaindrivendev/Swashbuckle/issues/457):

GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SchemaId(schemaIdStrategy);
[...]
}

然后添加这个方法:
private static string schemaIdStrategy(Type currentClass)
{
string returnedValue = currentClass.Name;
foreach (var customAttributeData in currentClass.CustomAttributes)
{
if (customAttributeData.AttributeType.Name.ToLower() == "datacontractattribute")
{
foreach (var argument in customAttributeData.NamedArguments)
{
if (argument.MemberName.ToLower() == "name")
{
returnedValue = argument.TypedValue.Value.ToString();
}
}
}
}
return returnedValue;
}

希望能帮助到你。

关于asp.net - Swashbuckle 重命名模型中的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31999967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com