我需要在下面显示的分层数据集中存储对父对象的引用。 甚至可以使用对象初始化器吗?是否有任何关键字引用'父'初始值设定项,或者我必须以经典方式执行此操作 - 首先声明父对象?
(我不知道在'?'字符之间写什么)
Scenarios.Add(new Scenario()
{
scenarioNumber = Scenarios.Count,
scenarioDescription = "Example scenario",
Steps = new BindingList<Step>()
{
new Step(){ parent = ?Scenario?, stepNumber = 1, subSteps = new BindingList<Step>() },
new Step(){ parent = ?Scenario?, stepNumber = 2, subSteps = new BindingList<Step>() },
new Step(){ parent = ?Scenario?, stepNumber = 3,
subSteps = new BindingList<Step>()
{
new Step() { parent = ?Step?, stepNumber = 1, subSteps = new BindingList<Step>() },
new Step() { parent = ?Step?, stepNumber = 2, subSteps = new BindingList<Step>() },
},
}
}
});
答案 0 :(得分:3)
对象初始值设定项构造不允许这样做。
您可以使用静态工厂方法,例如:
static Scenario Create(int scenarioNumber, string scenarioDescription, BindingList<Step> steps)
{
var scenario = new Scenario()
{
scenarioNumber = scenarioNumber,
scenarioDescription = scenarioDescription,
};
foreach (var step in steps)
{
step.parent = scenario;
}
scenario.Steps = steps;
return scenario;
}
答案 1 :(得分:1)
不,这是不可能的。
您必须声明变量以保存父对象并手动添加它们,一次添加一个。初始化语法对此无法帮助您。
答案 2 :(得分:0)
对我来说,不可能避免父创建然后影响它:据我所知,对象初始化器正在做它的工作,好像它在构造函数中,所以你的父Scenario
实例不是在初始化其内部集合时创建
抱歉,如果我弄错了