У меня есть несколько объектов Foo, которые содержатся в объектах Bar:
class Foo
{
int uniqueId; // every Foo has a different ID.
List<int> data;
}
class Bar
{
Foo foo = new Foo();
}
Иногда я хочу объединить объекты Foo, принадлежащие разным барам, следующим образом:
public void MergeWith(Bar otherBar)
{
this.foo.uniqueId = otherbar.foo.uniqueId;
this.foo.data.AddRange(otherbar.foo.data);
otherBar.foo = this.foo;
// Now both Bar objects refer to the same Foo, which contains all the data.
}
Bar bar1;
Bar bar2;
bar1.MergeWith(bar2);
Это хорошо. Проблема в том, что эти объекты Bar раздали ссылки на свои Foo
объекты на Baz
объекты. Baz
имеет List<Foo>
, собранных из нескольких источников.
Как я могу получить Baz
объекты, чтобы знать, когда их Foo
устарели? Должны ли объекты Foo
иметь ссылку на их "более новый" Foo
стиль связанного списка? Или есть лучший способ?