C# C语言中的集合和对象初始值设定项#
我需要在如下所示的分层数据集中存储对父对象的引用。 甚至可以使用对象初始值设定项吗?是否有任何关键字引用了“parent”初始值设定项,或者我必须以经典的方式执行此操作—首先声明parent对象 (我不知道在“?”字符之间写什么)C# C语言中的集合和对象初始值设定项#,c#,C#,我需要在如下所示的分层数据集中存储对父对象的引用。 甚至可以使用对象初始值设定项吗?是否有任何关键字引用了“parent”初始值设定项,或者我必须以经典的方式执行此操作—首先声明parent对象 (我不知道在“?”字符之间写什么) Scenarios.Add(新方案() { scenarioNumber=Scenarios.Count, scenarioDescription=“示例场景”, 步骤=新建绑定列表() { 新步骤(){parent=?Scenario?,stepNumber=1,s
Scenarios.Add(新方案()
{
scenarioNumber=Scenarios.Count,
scenarioDescription=“示例场景”,
步骤=新建绑定列表()
{
新步骤(){parent=?Scenario?,stepNumber=1,subSteps=new BindingList()},
新步骤(){parent=?Scenario?,stepNumber=2,subSteps=new BindingList()},
新步骤(){parent=?Scenario?,步骤编号=3,
子步骤=新建绑定列表()
{
新步骤(){parent=?Step?,stepNumber=1,subSteps=new BindingList()},
新步骤(){parent=?Step?,stepNumber=2,subSteps=new BindingList()},
},
}
}
});
不,这是不可能的
您必须声明变量来保存父对象,并手动添加它们,一次一个。初始值设定项语法在这里帮不了你。对我来说,不可能避免父级创建,然后影响它:据我所知,对象初始值设定项正在做它的工作,就好像它在构造函数中一样,因此当你初始化它的内部集合时,你的父级
场景
实例还没有创建
如果我弄错了,很抱歉对象初始值设定项构造不允许这样做 您可以改用静态工厂方法,例如:
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;
}
静态场景创建(int scenarioNumber、string scenarioDescription、BindingList步骤)
{
var场景=新场景()
{
scenarioNumber=scenarioNumber,
scenarioDescription=scenarioDescription,
};
foreach(var步进)
{
step.parent=场景;
}
情景。步骤=步骤;
返回场景;
}
创建场景后,仍然可以使用列表初始值设定项:scenario.Steps=newbindingslist(){new Step(),new Step()}代码>唯一的例外是子步骤
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;
}