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

时间:2012-03-26 19:08:44

标签: c# .net

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

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.
                          }
                 }

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

2 个答案:

答案 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,
                      }
             }