所以我有一个类型:
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,我正在测试一个web api。
public MyType Create([FromBody] RequestPayloadpayload)
{
return null
}
以下是我的邮递员设置:
那么为什么在控制器中,当我的枚举没有这个值时,我的对象有属性Prop3
到6666?
答案 0 :(得分:2)
我对" postman"一无所知,但我认为你会惊讶地发现除了1,2或4之外的int值可以分配给{{1} }。原因是 - 这就是枚举在C#中是如何工作的,因为在引擎盖下,枚举类型的字段被转换为Prop3
(或任何枚举的基础类型),任何{ {1}}值可以合法地存储在其中。
来自MSDN:
int
类型
int
的变量可以分配范围内的任何值 基础类型;值不限于命名 常数。
这可能是 ,以避免对"定义的"进行昂贵的运行时检查。值,但也可能有其他架构原因(使用" flag" enums是我想到的。)