OrderとOrderItemの2つのドメインクラスがあり、Orderが1つ以上の注文アイテムを含む集約ルートとして機能するとします。次のように:
class OrderItem
{
public long LineItemId { get; set; }
public String ProductId { get; set; }
public DateTime CreatedDate { get; set; }
}
class Order
{
public long OrderId { get; set; }
public DateTime OrderDate { get; set; }
public String OrderStatus { get; set; }
public OrderItem[] OrderItems { get; set; }
public DateTime CreatedDate { get; set; }
}
これで、Orderオブジェクトをそのラインアイテムと一緒に初期化するときに、以下に示すように、子アイテム初期化子内のアグリゲートのルートプロパティ/フィールドを参照またはアクセスできますか?
var order = new Order
{
OrderId = 1,
OrderDate = new DateTime(2012, 6, 1),
OrderStatus = "OPEN",
CreatedDate = DateTime.Now,
OrderItems = new[]
{
new OrderItem {
LineItemId = 1,
ProductId = "Orange",
CreatedDate = ??? // Initialize this to order's CreatedDate
},
new OrderItem {
LineItemId = 2,
ProductId = "Pear",
CreatedDate = ??? // Initialize this to order's CreatedDate
}
}
};
ここでの目的は、OrderItemがOrderと同じタイムスタンプ(CreatedDate)(Tまで)を持つようにすることです。これは簡単に実現できますか?(もちろん)CreatedDateを保持するための追加の変数を導入する必要はありませんか?