无效的枚举值

Invalid enum value

所以我有一个类型:

public enum Types
{
    aaa= 1,
    bbb= 2,
    ccc= 4
}

public class RequestPayload
{
    public int Prop1 { get; set; }
    public string Prop2 { get; set; }
    public Types Prop3 { get; set; }
}

我正在使用 Postman 测试网络 api。

public MyType Create([FromBody] RequestPayloadpayload)
{
    return null
}

这是我的邮递员设置:

那么为什么在控制器中我的对象有 属性 Prop3 到 6666 而我的枚举没有这个值?

我对 "postman" 一无所知,但我想您对可以将 1、2 或 4 以外的 int 值分配给 Prop3 感到惊讶。原因是——这就是枚举在 C# 中的工作方式,因为在幕后,枚举类型的字段被转换为 int(或枚举的任何底层类型),任何 int值可以合法地存储在其中。

来自MSDN

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};  

A variable of type Days can be assigned any value in the range of the underlying type; the values are not limited to the named constants.

可能 是为了避免根据 "defined" 值对值进行昂贵的 运行 时间检查,但也可能有其他架构原因( "flag" 枚举的使用是我想到的一种)。