So I have a type:
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; }
}
And with Postman I am testing a web api.
public MyType Create([FromBody] RequestPayloadpayload)
{
return null
}
Here are my postman settings:
So why in the controller my object has property Prop3
to 6666 when my enum does not have this value?
I don't know anything about "postman", but I assume you're surprised that an int value other than 1, 2, or 4 can be assigned to Prop3
. The reason is - that's just how enums work in C# since, under the hood, a field of an enum type is converted to an int
(or whatever the underlying type of the enum is), any int
value can legally be stored in it.
From MSDN:
enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
A variable of type
Days
can be assigned any value in the range of the underlying type; the values are not limited to the named constants.
This is probably to avoid expensive run-time checking of values against "defined" values, but there may be other architectural reasons as well (the use of "flag" enums is one that comes to mind).