这是我的代码:
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#中做到这一点,还是我必须做经典的做法?
答案 0 :(得分:1)
来自C# Language spec(强调我的)的第7.6.10.2节。
对象初始值设定项由一系列成员初始值设定项组成, 由{和}标记括起并用逗号分隔。每个成员 初始化程序必须命名对象的可访问字段或属性 被初始化,然后是等号和表达式或者 对象初始化器或集合初始化器。这是一个错误 对象初始化程序包含多个成员初始值设定项 相同的领域或财产。 对象不可能 初始化程序,用于引用它正在初始化的新创建的对象。
如果我正确理解了您的问题,则无法在对象初始化中引用新对象,因此无法执行您尝试的操作,因为此时无法访问vehicle
。