繁体   English   中英

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

[英]C# - Merge two objects of the same class and update all references?

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

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

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

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

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

  • 不要分发参考,始终使用属性来返回当前参考
  • 实施OnFooChange事件,并将更改发布到Bar类/实例内的所有感兴趣的各方

hth

马里奥

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM