Object and Collection Initializers - assign self?

后端 未结 2 1716
野趣味
野趣味 2020-12-20 11:37

I\'m using object and collection Initializers in the program and thinking how to get the example below.

Orders.Add(new Order()
                {
                     


        
相关标签:
2条回答
  • 2020-12-20 12:06

    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,
                          }
                 }
    
    0 讨论(0)
  • 2020-12-20 12:07

    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);
    
    0 讨论(0)
提交回复
热议问题