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

本文关键字:实例 实例化 属性 声明 | 更新日期: 2023-09-27 18:25:15

这是我的代码:

 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实例实例化它。嗯,我认为这个时候行动可能还没有创建。有没有办法在C#中做到这一点,或者我必须做经典的做作?

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

来自C#语言规范的第7.6.10.2节(强调矿)。

对象初始化器由一系列成员初始化器组成,用{和}标记括起来,并用逗号分隔。每个成员初始值设定项必须命名对象的可访问字段或属性正在初始化,后跟等号和表达式或对象初始化器或集合初始化器。这是一个错误对象的多个成员初始值设定项相同的字段或属性对象不可能initializer引用它正在初始化的新创建的对象

如果我正确理解您的问题,那么就不可能在对象初始化中引用新对象,因此不可能执行您正在尝试的操作,因为此时无法访问vehicle