首页 > 解决方案 > _base_ 值上的空对象模式

问题描述

假设我们有以下 DTO 对象,它表示数据库中的记录:

public class UserDto
{
  public int Id { get; set; }  
  public DateTime? ExpireOn { get; set; }
}

所以Id属性不可为空并且ExpireOn是。我在基于空对象模式实现域对象时遇到问题,因为我不知道如何实现不可为空的ExpireOn属性。执行此操作的最佳实用方法是什么?

标签: c#null-object-pattern

解决方案


您可以在 Tor 中使用 Nullable 并检查是否为 null。

public class User
{
    public User(int? id, Datetime? expireOn)
    {
        if(id == null)
        {
           throw new ArgumentNullException(nameof(id));
        }

        if(expireOn == null)
        {
           throw new ArgumentNullException(nameof(expireOn));
        }

        Id = id.Value
        ExpireOn = expireOn.Value;
    }

    public int Id { get; set; }
    public Datetime ExpireOn { get; set; }
}

推荐阅读