【问题标题】:Graceful way of allowing one of two allowed values in string C#在字符串 C# 中允许两个允许值之一的优雅方式
【发布时间】:2022-12-06 00:19:06
【问题描述】:
我有一个具有以下属性的请求类
/// <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"))
有没有更好的方法来处理这个问题?
【问题讨论】:
标签:
c#
azure
azure-functions
.net-6.0
【解决方案1】:
这可能是解决方案
在类中创建另一个属性
/// <summary>
/// First time discount flag
/// </summary>
[JsonProperty("firstTimeDiscountFlag")]
public string FirstTimeDiscountFlag { get; set; }
public bool IsFirstTimeDiscountFlagValid
{
get
{
if (string.IsNullOrWhiteSpace(FirstTimeDiscountFlag) ||
(FirstTimeDiscountFlag.ToUpper() != "Y" &&
FirstTimeDiscountFlag.ToUpper() != "N")
)
{
return true;
}
return false;
}
}
像那样使用
if(request.IsFirstTimeDiscountFlagValid){
//perform your operation
}
【解决方案2】:
你可以把它写成像这样的表达式主体属性......
public string FirstTimeDiscountFlag { get; set; }
public bool IsFirstTimeDiscountFlagValid =>
string.IsNullOrEmpty(FirstTimeDiscountFlag) || "YN".Contains(FirstTimeDiscountFlag.ToUpper());
但更好的方法可能是研究 Fluent Validation 库 (https://github.com/FluentValidation/FluentValidation) 并为您的模型类编写一个验证器。