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,我想在这个阶段用它的父操作实例实例化它。好吧,我认为此时操作可能尚未创建。有没有办法在 C# 中做到这一点,还是我必须做经典的做作?

4

1 回答 1

1

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

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

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

于 2013-07-28T00:14:12.870 回答