阻止ServiceStack序列化ENUM

Nin*_*oel 5 c# enums json servicestack

这是我目前的回复......(来自我的RESTful API)

[
  {
    "batchID": 1,
    "status": "IN_PROGRESS"
  }
]
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是......

[
  {
    "batchID": 1,
    "status": 10   -- which means "In_progress" in my ENUM
  }
]
Run Code Online (Sandbox Code Playgroud)

这是我的c#DTO ......

public class ReplyItem
{
    public int BatchID { get; set; }            
    public BatchStatusCodes Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以在JSON中我BatchStatusCode被序列化为一个字符串,但我希望它是一个整数,因为ENUM具有特定的每个值集(在5的上升)

一个解决方案:我知道我可以BatchStatusCodes改为一个int,每当我使用它时,我可以将ENUM转换为整数,但在回复中包含ENUM会使它稍微更自我描述.

我希望也许我可以使用一个属性或一些这样的花哨技巧,或者可能设置一个服务范围的变量来不处理当前的枚举?

myt*_*thz 7

您可以[Flags]向要将其视为数字的枚举添加属性,例如:

[Flags]
BatchStatusCodes { ... } 
Run Code Online (Sandbox Code Playgroud)

否则,您可以获取ServiceStack.Text将所有枚举视为整数:

JsConfig.TreatEnumAsInteger = true;
Run Code Online (Sandbox Code Playgroud)