我想创建双向链接对象(父级与子级,其中 Parent.Child 属性指父级的子级,Child.Parent 指子级的父级)。
据我所知,如果我使用反射来修改第一个创建的记录,并在创建它后链接到第二个记录,则只有 C# 记录才可能实现这一点。
或者有更方便的方法吗?
我尝试过的:设置构造函数调用,并观察到在构造将传递到父级构造函数的子级时不可能传递“父级”引用。
使用可变容器来保存链接。
class ItemContainer<T>
{
public T Item { get; set; }
public ItemContainer<T> Child { get; set; }
public ItemContainer<T> Parent { get; set; }
}
var linkedList = new List<ItemContainer<MyRecordType>>();
var item1 = new ItemContainer<MyRecordType>();
var item2 = new ItemContainer<MyRecordType>();
item1.Child = item2;
item1.Item = new MyRecordType { Initialization data 1 };
item2.Parent = item1;
item2.Item = new MyRecordType { Initialization data 2 };
linkedList.Add(item1);
linkedList.Add(item2);
var childOfItem1 = item1.Child.Item;
var parentOfItem2 = item2.Parent.Item;
如果您愿意,您可以设计自己的链表类来隐藏可变容器的详细信息。