C# - 合并同一个类的两个对象并更新所有引用?

时间:2011-04-05 05:16:36

标签: c# .net merge

我有一些包含在Bar对象中的Foo对象:

class Foo
{
    int uniqueId; // every Foo has a different ID.
    List<int> data;
}

class Bar
{
    Foo foo = new Foo();
}

有时我想合并属于不同Bars的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链接列表样式?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我只能想到凌晨的两种方式:

  • 不要总是提出参考 使用属性返回当前值 参考
  • 实施OnFooChange 事件并将更改发布到所有人 在Bar class / instance
  • 中感兴趣的各方

HTH

马里奥