无效的枚举值
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" 枚举的使用是我想到的一种)。
所以我有一个类型:
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" 枚举的使用是我想到的一种)。