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

我正在使用 Postman 测试一个 web api。

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

这是我的邮递员设置:

在此处输入图像描述

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

4

1 回答 1

2

我对“邮递员”一无所知,但我假设您对可以将 1、2 或 4 以外的 int 值分配给Prop3. 原因是 - 这就是枚举在 C# 中的工作方式,因为在底层,枚举类型的字段被转换为int(或任何枚举的基础类型),任何int值都可以合法地存储在其中。

来自MSDN

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

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

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

于 2016-11-17T16:12:09.143 回答