模型名称中的NSwag命名空间

影子羊

可以生成客户端代码,以便模型的类名具有完整的名称空间作为前缀?

那应该避免相同的类名冲突。

com.foo.MyClass 

it.foo.MyClass

到现在我得到的是MyClassMyClass2这与其说是有意义的。

应该是最好有,在名称冲突的情况下,ComFooMyClassItFooMyClass

影子羊

我找到了一个使用自定义SchemaNameGenerator而不是自定义TypeNameGenerator(我没有程序包信息)的解决方案。

internal class MySchemaNameGenerator : DefaultSchemaNameGenerator, ISchemaNameGenerator
{
    public override string Generate(Type type)
    {
        string retValue = base.Generate(type);
        // Quite ugly but do fix the concept
        if (retValue.Equals("BaseClass"))
        {
            retValue = type.FullName.Replace(".","_");
        }
        return retValue;
    }
}

始终通过设置进行设置:

 app.UseSwaggerUi(typeof(WebApiApplication).Assembly, new SwaggerUiSettings
                {
                    SchemaNameGenerator = new MySchemaNameGenerator(),
                    ...

这样我得到一些更有意义的东西

"/api/test/models/base": {
      "get": {
        "tags": [
          "Test"
        ],
        "operationId": "Test_Get2",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/WebApi_Models_BaseClass"
            },
            "x-nullable": true
          }
        }
      }
    },
    "/api/test/models/extended": {
      "get": {
        "tags": [
          "Test"
        ],
        "operationId": "Test_Get3",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ExtendedClass"
            },
            "x-nullable": true
          }
        }
      }
    },
    "/api/test/modelli/base": {
      "get": {
        "tags": [
          "Test"
        ],
        "operationId": "Test_Get4",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/WebApi_Modelli_BaseClass"
            },
            "x-nullable": true
          }
        }
      }
    },

即使多态性的discriminator属性想要基名称“ BaseClass”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

模型名称和命名空间

配置Swashbuckle以忽略模型中的命名空间

从 JMS 消息中获取命名空间名称

NSwag过滤器名称空间

重命名现有的Rails模型并添加名称空间

如何从相关模型中引用命名空间模型?

包名称的命名空间

配置文件中“命名空间”中的名称,可能吗?

Rails:将设计路线放入命名空间后,模型名称将以命名空间为前缀。如何删除?

EF 核心模型构建器中实体的命名空间

Laravel模型中的命名空间问题-程序包开发

在 Rails 中组织命名空间和相关模型

类型或命名空间名称Web在命名空间系统中不存在

命名空间“Quartz”中不存在类型或命名空间名称“Collection”

命名空间“Microsoft.EntityFrameworkCore”中不存在类型或命名空间名称“Relational”

我在 C# 中收到错误“命名空间中不存在类型或命名空间名称”

随机“命名空间名称'Core'在命名空间'Tweetinvi中不存在”

命名空间“UnityEngine.Experimental”中不存在类型或命名空间名称“Input”

cmake中组件和名称空间的命名约定

表单中的命名元素如何干扰全局名称空间?

名称空间“ Eigen”中的“ EigenvalueType”未命名类型

名称<...>在命名空间clr-namespace <...>中不存在

名称空间“ std”中的“数组”未命名模板类型

是否可以在@nrwl/nx 中更改命名空间名称?

在 Umbraco 中找不到类型或命名空间名称“xxx”

名称空间“ std”中的“功能”未命名模板类型

错误:名称空间“ pqxx”中的“行”未命名类型

如何创建命名空间模型?

NSwag中的自定义架构名称