2016-11-17 132 views
1

所以我有一个类型:无效枚举值

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; } 
} 

并与邮差,我测试Web API。

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

这里是我的邮差设置:

enter image description here

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

+1

[在C#MVC中验证枚举值的可能重复。部分验证发生 - 如何更改验证行为?](http://stackoverflow.com/questions/26425242/validating-enum-values-within-c-sharp-mvc-partial-validation-occurs-how-to-ch) –

回答

2

我对“邮递员”一无所知,但我想你很惊讶除1,2或4以外的整数值可以分配到Prop3。原因在于 - 这就是C#中枚举的工作原理,因为在枚举类型的字段被转换为int(或任何枚举的基础类型)时,任何int值都可以合法存储在其中。

MSDN

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

Days类型的变量可以分配在 底层类型范围内的任何值;该值不限于名为 的常量。

这是可能避免昂贵的运行时对“规定”的价值观值的检查,但也有可能是其他建筑方面的原因,以及(使用“标志”枚举是一个来记) 。

+0

事实上,我很惊讶我可以将其他值赋予mu枚举。 –