Подтвердить что ты не робот

Инициализаторы объектов и коллекций - назначить себя?

Я использую инициализаторы объектов и коллекции в программе и думаю, как получить пример ниже.

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

Как я могу назначить вновь созданный заказ для элемента заказа?

4b9b3361

Ответ 1

То, что вы пытаетесь сделать здесь, невозможно. Вы не можете ссылаться на объект, созданный внутри тела инициализатора объекта. Вам нужно разбить это на несколько отдельных шагов.

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);

Ответ 2

Если Order.items является свойством, вы можете поместить что-то вроде этого в setterter свойств

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