1

我正在尝试使用 NSwagStudio 从 AspNetCore Web API 生成 ac# 客户端。生成的代码包含一组枚举,根据装饰它们的属性,这些枚举显然是 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,

}

这是生成器的问题还是我的文档有问题?有没有办法在不手动编辑代码的情况下解决这个问题?

谢谢。

4

1 回答 1

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"
        }

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

于 2017-06-06T06:10:18.413 回答