親フィールドと子フィールドを持つクラスを実装する必要があります。問題は、子を追加するとすぐにその親への参照を保持する必要があることです。私はそれを実装しましたが、うまくいくように見えますが、それが正しいかどうかはよくわかりません。どんなアドバイスも役に立ちます!
namespace DocumentToDocument
{
public class MyEventArgs<T>: EventArgs
{
public T D;
}
public class MyList<T> : List<T>
{
public event EventHandler OnAdd;
public new void Add(T item)
{
if (null != OnAdd)
{
var m = new MyEventArgs<Document> {D = item as Document};
OnAdd(this, m);
}
base.Add(item);
}
}
public class Document
{
public Document()
{
Children = new MyList<Document>();
Children.OnAdd += new EventHandler(Children_OnAdd);
}
public string Name;
public Document Parent;
public MyList<Document> Children;
public void Children_OnAdd(object sender, EventArgs e)
{
((MyEventArgs<Document>) e).D.Parent = this;
}
}
class Program
{
private static void Main(string[] args)
{
var d = new Document {Name = "I am a parent"};
var dd = new Document {Name = "I am a child"};
d.Children.Add(dd);
}
}
}