反序列化枚举C#

扎普克拉克

可以将我的枚举字符串动态反序列化为枚举。

在我的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/

康纳·洛

是否可以将我的枚举字符串动态反序列化为枚举?

如果您要在dotnet-core上构建Web API项目,则链接到的博客中的解决方案效果很好,尽管我会使用标准System.Text.Json库(从core 3.0开始):

using System.Text.Json.Serialization;

namespace Foobar
{
    [JsonConverter(typeof(JsonStringEnumConverter))]
    public enum Foo
    {
        Bar = 0,
        Baz = 1
    }
}

这会将枚举Foo.Bar转换"Bar"为客户端和"Bar" -> Foo.Bar服务器的枚举

有没有办法让我的枚举分开?我觉得枚举错误代码的清单很长,不是很干净或无法维护。

我不知道我是否可以回答这一部分,因为看来您已经使用类结构完成了这一部分。我对您提供的代码是目标还是当前的代码感到困惑。


有关枚举的序列化和反序列化的更多信息,请查看这篇文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章