对象和集合初始化器 – 分配自己?

我正在程序中使用对象和集合初始化程序,并思考如何获取下面的示例。

Orders.Add(new Order() { id = 123, date = new datetime(2012,03,26) items = new OrderItems() { lineid = 1, quantity = 3, order = ?? // want to assign to current order. } } 

如何将新创建的订单分配给订单商品?

你在这里尝试的是不可能的。 您不能在对象初始化程序体中引用正在构造的对象。 您需要将其分解为一组单独的步骤

 var local = new Order() { id = 123, date = new datetime(2012, 03, 26); }; local.items = new OrderItems() { lineid = 1; quantity = 3; order = local; }; Orders.Add(local); 

如果Order.items是一个属性,你可以在属性设置器中放置这样的东西

 public class Order { private OrderItems _items; public OrderItems items { get { return _items; } set { _items = value _items.order = this } } } 

然后你可以从初始化器中取出订单:

 Orders.Add(new Order() { id = 123, date = new datetime(2012,03,26) items = new OrderItems() { lineid = 1, quantity = 3, } }