所以我有一个类型:
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; }
}对于邮递员,我正在测试一个网络api。
public MyType Create([FromBody] RequestPayloadpayload)
{
return null
}这是我的邮递员设置:

那么,为什么在控制器中,当我的枚举没有这个值时,我的对象有属性Prop3到6666?
发布于 2016-11-17 16:12:09
我对“邮递员”一无所知,但我想您会感到惊讶的是,除了1、2或4以外的int值可以分配给Prop3。原因是--这正是枚举在C#中的工作方式,因为枚举类型的字段被转换为int (或枚举的底层类型),任何int值都可以合法地存储在其中。
来自MSDN
枚举天数:字节{Sat=1、Sun、Mon、Tue、Wed、
Days、Fri};Days类型的变量可以被分配到基础类型范围内的任何值;这些值不限于指定的常量。
这可能是为了避免在运行时根据“定义”值对值进行昂贵的检查,但可能还有其他的架构原因(“标志”枚举的使用就是其中之一)。
https://stackoverflow.com/questions/40659610
复制相似问题