如何在声明时使用其父实例来实例化属性

3
这是我的代码:

 var Operations = new List<Operation>
 {
     new Operation
     {
         Date = DateTime.Now,
         OperationId = 0,
         OperationType = OperationType.Entry,
         OperationVehicles = new List<OperationVehicle>
         {
             new OperationVehicle { Vehicle = vehicle},
         }
     },
     new Operation
     {
         Date = DateTime.Now.AddDays(2),
         OperationId = 1,
         OperationType = OperationType.Exit,
         OperationVehicles = new List<OperationVehicle>
         {
             new OperationVehicle { Vehicle = vehicle, /* Operation = ???*/},
         }
     }
 };

OperationVehicle类有一个虚拟的公共属性,类型为Operation。我希望在这个阶段用它的父级Operation实例进行实例化。但是,在此时,我认为Operation可能还没有被创建。在C#中有方法可以做到这一点吗?还是我必须使用经典的赋值方法?

1个回答

1
C#语言规范 的第7.6.10.2节中(强调是我的)可以得知,对象初始化程序由成员初始化程序序列组成,由{和}标记包围并用逗号分隔。每个成员初始化程序必须命名正在初始化的对象的可访问字段或属性,后跟等号、表达式或对象初始化程序或集合初始化程序。如果对象初始化程序包含同一字段或属性的多个成员初始化程序,则会出现错误。在对象初始化程序中不能引用正在初始化的新对象,因此无法像您尝试的那样访问vehicle。如果我正确理解了您的问题,则无法在对象初始化中引用新对象,因此无法做您尝试的事情,因为此时vehicle不可访问。

你完全理解了我的问题。谢谢! - HichemSeeSharp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接