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

时间:2013-07-28 00:07:07

标签: c# class instance

这是我的代码:

 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#中做到这一点,还是我必须做经典的做法?

1 个答案:

答案 0 :(得分:1)

来自C# Language spec(强调我的)的第7.6.10.2节。

  

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

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