【发布时间】:2020-05-12 14:13:02
【问题描述】:
是否可以将我的枚举字符串动态反序列化为枚举。
在我的 API 和使用我的 API 的应用程序中,我有这个类。
public static class ErrorCodes
{
public enum General
{
INCORRECT_PASSWORD,
INCORRECT_USERNAME,
INVALID_USERNAME
}
public enum ERRORTYPE_1
{
DATESPAN_NOT_PERMITTED
}
public enum ERRORTYPE_2
{
PERIOD_NOT_ALLOWED
}
}
在我的 API 中有这个。这是以 JSON 形式发送回我的应用程序的内容。
public class Error
{
public string Message { get; set; }
public Enum Code { get; set; }
public Error() { }
public Error(Enum code)
{
this.Code = code;
}
public Error(string message, Enum code)
{
this.Message = message;
this.Code = code;
}
}
然后我可以像这样返回我的错误。
new Error(ErrorCodes.ERRORTYPE_2.PERIOD_NOT_ALLOWED)
有没有办法让我的枚举分开?我觉得超级长的枚举错误代码列表不是很干净或可维护。
这篇博文几乎是我想做的,但对枚举进行了更多抽象。 https://bytefish.de/blog/enums_json_net/
【问题讨论】:
-
不清楚您期望在这里发生什么。您希望 JSON 是什么样子?
-
我想在客户端将字符串 json 反序列化为适当的枚举类型。我将枚举的字符串值和错误对象中的字符串消息作为 JSON 传递。
-
这组可能的枚举可以有重复的值名称
INCORRECT_PASSWORD,DATESPAN_NOT_PERMITTED, ..., ,还是你确定它们是唯一的? -
这有关系吗?目前它们是独一无二的。
-
如果它们不是唯一的,您将无法仅从枚举值字符串中反序列化 JSON。或者,如果您愿意封装枚举类型信息,请参见例如Deserialize specific enum into system.enum in Json.Net.