我有两节课。第一类是Parent
,其中有一个对象列表(Child
)。每一个Child
参考了他的Parent
班级。问题是如何通过构造函数来实现这个引用。
public sealed class Child
{
public Child(string id, string name, Parent parent)
{
Id = id;
Name = name;
Parent = parent;
}
public Parent ParentInstance { get; private set; }
public string Id { get; private set; }
public string Name { get; private set; }
}
public sealed class Parent
{
public Parent(string id, string name, IEnumerable<Child> children)
{
Id = id;
Name = name;
Children = children;
}
public string Id { get; private set; }
public string Name { get; private set; }
public IEnumerable<Child> Children { get; private set; }
}
问题是我有一个代码可以解析一些 XML 代码并创建以下列表Parent
对象。这是示例:
internal Parent ParseParent(XElement parentXElement)
{
return new Parent(parentXElement.Attribute("id").Value, parentXElement.Attribute("name").Value, parentXElement.Descendants("child").Select(ParseChild));
}
当然我可以初始化Parent
内的财产Parent
构造函数,只需删除private
from Parent
setter ,然后遍历所有子项并使用此属性。但我想将其设为只读。像这样的事情:
public Parent(string id, string name, IEnumerable<Child> children)
{
Id = id;
Name = name;
Children = children.ForEach(c => c.ParentInstance = this);
}