对象和集合初始化器 – 分配自己?
我正在程序中使用对象和集合初始化程序,并思考如何获取下面的示例。
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, } }