枚举值无效

时间:2016-11-17 16:04:58

标签: c# enums asp.net-web-api2 parameterbinding

所以我有一个类型:

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
}

以下是我的邮递员设置:

enter image description here

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

1 个答案:

答案 0 :(得分:2)

我对" postman"一无所知,但我认为你会惊讶地发现除了1,2或4之外的int值可以分配给{{1} }。原因是 - 这就是枚举在C#中是如何工作的,因为在引擎盖下,枚举类型的字段被转换为Prop3(或任何枚举的基础类型),任何{ {1}}值可以合法地存储在其中。

来自MSDN

int
     

类型int的变量可以分配范围内的任何值   基础类型;值不限于命名   常数。

这可能是 ,以避免对"定义的"进行昂贵的运行时检查。值,但也可能有其他架构原因(使用" flag" enums是我想到的。)