NSwagStudio生成损坏的客户端代码(重复的枚举值)。我究竟做错了什么?

时间:2017-04-18 21:23:30

标签: c# swagger nswag

我尝试使用NSwagStudio从AspNetCore Web API生成c#客户端。生成的代码包含一组枚举,这些枚举基于装饰它们的属性,显然是Json序列化的标志 - 我无法找到实际使用它们的位置。其中一些是使用重复值生成的,这使得代码无法开箱即用。

示例:

[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "8.30.6304.31883")]
public enum ConstructorInfoMethodImplementationFlags
{
    _0 = 0,

    _0 = 0,

    _1 = 1,

    _2 = 2,

    _3 = 3,

    _3 = 3,

    _4 = 4,

    _4 = 4,

    _8 = 8,

    _16 = 16,

    _32 = 32,

    _64 = 64,

    _128 = 128,

    _256 = 256,

    _4096 = 4096,

    _65535 = 65535,

}

这是发生器的问题还是我的文档的问题?有没有办法解决这个问题而无需手动编辑代码?

感谢。

1 个答案:

答案 0 :(得分:0)

似乎你的Web API项目中的枚举定义错误。 你有类似的东西:

[Flags]
public enum ConstructorInfoMethodImplementationFlags
{
    None,
    Method0 = 0,
    Method1 = 1,
    Method2 = 2
    Method3 = 4,
    ...
    AllMethods = 65535
}

因此,转换为您不期望的方式的OAI规范:

"ConstructorInfoMethodImplementationFlags": {
          "format": "int32",
          "enum": [
            0,
            0,
            1,
            2,
            4
            ...
            65535
          ],
          "type": "integer"
        }

这里的解决方案是为每个枚举成员分配整数值。