2016-11-17 5 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

だから私の列挙はこの値を持っていない場合、コントローラに私のオブジェクトが6666にプロパティProp3を持っている理由は?

+1

[C#MVC内の[Enum値の検証]の可能な複製。部分的な検証が行われる - 検証動作を変更する方法?](http://stackoverflow.com/questions/26425242/validating-enum-values-within-c-sharp-mvc-partial-validation-occurs-how-to-ch) –

答えて

2

私は "郵便配達"について何も知らないが、1,2,3または4以外のint値をProp3に割り当てることができます。その理由は、enum型のフィールドがint(または列挙型の基礎となる型が何であれ)に変換されているため、C#でenumがどのように機能するのかです。intの値を合法的に格納できます。 MSDNから

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

タイプDaysの変数は 下地タイプの範囲内の任意の値を割り当てることができます。値は名前付き 定数に限定されません。

これはおそらくは「定義された」値に対する値のチェック高価ランタイムを避けるために、しかし、同様に他の建築の理由があるかもしれないです(「フラグ」列挙型を使用することである頭に浮かぶ1) 。

+0

実際、mu enumに他の値を割り当てることができることに私は驚きました。 –

関連する問題