gpt4 book ai didi

c# - 允许字符串 C# 中两个允许值之一的优雅方式

转载 作者:行者123 更新时间:2023-12-02 07:52:09 25 4
gpt4 key购买 nike

我有一个具有以下属性的请求类

        /// <summary>
/// First time discount flag
/// </summary>
[JsonProperty("firstTimeDiscountFlag")]
public string FirstTimeDiscountFlag { get; set; }

我这样做是为了检查它是否为空并且具有允许的值

 if(string.IsNullOrWhiteSpace(request.FirstTimeDiscountFlag)
|| (request.FirstTimeDiscountFlag.ToUpper() != "Y" && request.FirstTimeDiscountFlag.ToUpper() != "N"))

有没有更好的方法来处理这个问题?

最佳答案

正确的方法是使用 JsonConverter它将把 bool 值序列化为 YN 并处理反序列化:

public class YNBoolConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
writer.WriteValue(value switch
{
true => "Y",
false => "N",
_ => string.Empty
});
}

public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{
return reader.Value switch
{
true => true,
"Y" => true,
"y" => true,

false => false,
"N" => false,
"n" => false,

_ => existingValue
};
}

public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
}

您通过 JsonConverterAttribute 使用它:

{
[JsonConverter(typeof(YNBoolConverter))]
public bool? BoolValue { get; set; }
}

工作演示可用 here .

关于c# - 允许字符串 C# 中两个允许值之一的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74690756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com