【问题标题】: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) 并为您的模型类编写一个验证器。

      【讨论】:

      • 如果值为“YN”。会发生什么?
      猜你喜欢
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多