2011-04-05 93 views
0

我有包含在酒吧對象的某些富對象:C# - 合併同一類的兩個對象並更新所有引用?

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鏈接列表樣式?或者,還有更好的方法?

+0

你可以展示'Baz'對象如何從'Bar'獲取'Foo'引用?誰負責設置'Baz.Foos'? – 2011-04-05 07:30:36

回答

0

我只能想到兩個方法,早在上午:

  • 不要把手伸到參考始終 使用屬性返回當前 參考
  • 實現一個OnFooChange 事件後更改應用於所有 利害關係人從酒吧類/實例中

心連心

Mario