2016-11-17 135 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枚舉。 –