ドメインモデル検証のベストプラクティスをまだ探しています。ドメインモデルのコンストラクターに検証を入れるのは良いですか?私のドメインモデル検証の例は次のとおりです。
public class Order
 {
    private readonly List<OrderLine> _lineItems;
    public virtual Customer Customer { get; private set; }
    public virtual DateTime OrderDate { get; private set; }
    public virtual decimal OrderTotal { get; private set; }
    public Order (Customer customer)
    {
        if (customer == null)
            throw new  ArgumentException("Customer name must be defined");
        Customer = customer;
        OrderDate = DateTime.Now;
        _lineItems = new List<LineItem>();
    }
    public void AddOderLine //....
    public IEnumerable<OrderLine> AddOderLine { get {return _lineItems;} }
}
public class OrderLine
{
    public virtual Order Order { get; set; }
    public virtual Product Product { get; set; }
    public virtual int Quantity { get; set; }
    public virtual decimal UnitPrice { get; set; }
    public OrderLine(Order order, int quantity, Product product)
    {
        if (order == null)
            throw new  ArgumentException("Order name must be defined");
        if (quantity <= 0)
            throw new  ArgumentException("Quantity must be greater than zero");
        if (product == null)
            throw new  ArgumentException("Product name must be defined");
        Order = order;
        Quantity = quantity;
        Product = product;
    }
}
ご提案ありがとうございます。