【问题标题】:c# add logic to propertiesc# 为属性添加逻辑
【发布时间】:2020-02-12 12:39:29
【问题描述】:

我有一个具有两个属性的模型:

public class AlertRequest
{
   public DateTime? FromDate { get; set; }
   public DateTime? ToDate { get; set; }
}

我需要为这些道具添加检查

  • FromDate : 当null 则设置为Datetime.MinValue;
  • ToDate : 当null 则设置为Datetime.MaxValue;

如何在 C# 中实现?

【问题讨论】:

标签: c# .net properties


【解决方案1】:

您可以手动实现属性

public class AlertRequest
{
   private DateTime? m_FromDate = DateTime.MinValue;
   private DateTime? m_ToDate = DateTime.MaxValue;

   public DateTime? FromDate { 
     get {
       return m_FromDate;
     }
     set {
       m_FromDate = value ?? DateTime.MinValue;
     } 
   }

   public DateTime? ToDate { 
     get {
       return m_ToDate;
     }
     set {
       m_ToDate = value ?? DateTime.MaxValue;
     } 
   }
}

现在我们可以放

AlertRequest request = new AlertRequest();

request.ToDate = null;

// 9999-12-31 (Max Date)
Console.Write(request.ToDate.ToString("yyyy-MM-dd"));

【讨论】:

  • 我问过 OP,但我的建议也是初始化这些值并删除可为空的类型?
  • @Mr.男孩:因为我们必须允许分配null,例如myAlertRequest.ToDate = null; 我们必须使用 DateTime?
  • 当然,关键是你不能设置为空,如果你尝试设置那些最小值/最大值
  • 另一个想法可能是允许设置 null,但 return 最小值/最大值,即更改 getter 而不是 setter。但除非我们需要可为空的类型,否则它似乎有点混乱。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多