Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无效的枚举值_C#_Enums_Asp.net Web Api2_Parameterbinding - Fatal编程技术网

C# 无效的枚举值

C# 无效的枚举值,c#,enums,asp.net-web-api2,parameterbinding,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

所以我有一种类型:

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
}
以下是我的邮递员设置:


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

我对“postman”一词一无所知,但我假设您会惊讶于可以将1、2或4以外的int值分配给
Prop3
。原因是——这正是枚举在C中的工作方式,因为在后台,枚举类型的字段被转换为
int
(或者不管枚举的底层类型是什么),任何
int
值都可以合法地存储在其中

发件人:

Days
类型的变量可以指定以下范围内的任何值 基础类型;这些值不限于指定的 常数


这可能是为了避免对“已定义”的值进行昂贵的运行时检查,但也可能有其他体系结构原因(我想到的是使用“标志”枚举)。

可能重复事实上,我很惊讶我可以将其他值分配给mu enum。
enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};