私はMyItemsのリストを持っています。 MyItemは、そのピアを参照する場合と参照しない場合があります。c#クローン相互参照リスト
List<MyItem> myList = new List<MyItem>();
myList.add(...) //add all 8 items
myList[1].RefTo = myList[3];
myList[5].RefTo = myList[2];
myList[7].RefTo = myList[5];
Item 0
Item 1 ----+
+---> Item 2 |
| Item 3 <---+
| Item 4
+--- Item 5 <---+
Item 6 |
Item 7 ----+
私はリスト全体のクローンを作成する必要があります。新しいリストのすべてのMyItemは、古いリストのMyItemsの新しいコピーです(参照しません)。新しいリストのすべての参照は、新しいリストの項目を指していなければなりません。その後、新しいリストは古いリストでも機能し、古いMyItemは完全に削除されます。
私は、MyItem.Clone()を呼び出して項目を複製できるように、MyItemでICloneableインターフェイスを実装しました。ただし、複製されたコピーは引き続き古いリストのMyItemsを参照しています。
MyItemsの参照を新しいリストのオブジェクトで更新するにはどうすればよいですか? サンプルコードは高く評価されます。
など、望むようにあなたのRefToフィールドは、クローンコピーに保存されます一度、各オブジェクトが唯一のシリアル化されたようあなたがリストのクローンを作成する必要があるとしている場合、私はほとんど思ったんだけど、リスト内の項目ではない... – Daryl