我有一个用于序列化和反序列化的记录包,它发布在我项目的私有GitHub Repo中。其中一个里面有许多枚举。我正在使用GraphQL后端,在GraphQL中,枚举被转换为大写,单词之间有下划线。
为了解决这个问题,我创建了一个实现
StringEnumConverter
接受以下价值观
Regular
到
REGULAR
和
AnnualLeave
到
ANNUAL_LEAVE
。这些似乎工作得很好,但我有一个状态枚举,它是
Draft
,但是,它根本不会通过转换器将其更改为
DRAFT
.
这是我的
WriteJson
负责该工作的方法:
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
if (value is Enum enumValue)
{
var enumString = enumValue.ToString();
var snakeCase = Regex.Replace(enumString, "([a-z])([A-Z])", "$1_$2").ToUpper();
writer.WriteValue(snakeCase);
}
else
{
base.WriteJson(writer, value, serializer);
}
}
我用断点做了一些调试,前两个,Regular和AnnualLeave很好地命中了断点,但由于某种原因,Draft没有。
请问,有人能就为什么会发生这种情况提供任何帮助吗?