I'm using object and collection Initializers in the program and thinking how to get the example below.
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.
}
}
How can I assign the newly created order to the order item?
What you're trying to here isn't possible. You can't refer to the object being constructed from within an object initializer body. You will need to break this up into a set of separate steps
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);
If Order.items
is a property, you can put something like this in the property setter
public class Order
{
private OrderItems _items;
public OrderItems items
{
get { return _items; }
set
{
_items = value
_items.order = this
}
}
}
Then you can just take the order out of the initializer:
Orders.Add(new Order()
{
id = 123,
date = new datetime(2012,03,26)
items = new OrderItems()
{
lineid = 1,
quantity = 3,
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With