我正在程序中使用对象和集合初始化程序,并思考如何获取下面的示例。
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.
}
}
如何将新创建的订单分配给订单商品?
答案 0 :(得分:10)
你在这里尝试的是不可能的。您不能在对象初始化程序体中引用正在构造的对象。您需要将其分解为一组单独的步骤
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);
答案 1 :(得分:2)
如果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,
}
}