Инициализаторы объектов и коллекций - назначить себя?
Я использую инициализаторы объектов и коллекции в программе и думаю, как получить пример ниже.
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.
}
}
Как я могу назначить вновь созданный заказ для элемента заказа?
Ответы
Ответ 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,
}
}