父对象的集合成员的对象是否也应该引用父对象?

时间:2013-06-21 01:17:15

标签: c# oop

所以我有一个ContactCardGroup类,其中包含一组ContactCardGroupMemberships:

 public class ContactCardGroup : AbstractEntity, IContactCardGroup
    {

        public ICollection<ContactCardGroupMembership> Members { get; protected set; }

和ContactCardGroupMembership类:

 public class ContactCardGroupMembership : AbstractAspect
    {

        public long MembershipId { get; set; }

        public long GroupId { get; set; }

        public ContactCard Contact { get; set; }

        public bool IsPrimary { get; set; }

        public ICollection<ContactGroupRole> Roles { get; protected set; }

        public ContactCardGroupMembership()
        {
            this.Roles = new Collection<ContactGroupRole>();
        }
    }

因此,在整个代码中,如果不是GroupId,我会有一个ContactCardGroup成员....但是这不会引入一个令人讨厌的循环引用,特别是在处理/销毁时。这有什么规则/模式吗?

似乎自从我安装ReSharper以来,我对任何编码选择都不再有信心;(

1 个答案:

答案 0 :(得分:2)

您可以使用循环引用,它们非常有用。大多数ORM很好地处理它们。

但是,如果你使用序列化库,那么它们可能有点棘手,而且通常不喜欢循环引用。

但是你是否应该使用它们取决于你正在解决的问题。

如果该图与根引用隔离,则两个(或多个)相互引用的事物(对象图)将不会保持活动状态。但是,只要在对象图中保留对一件事的引用,就可能意外地最终坚持大图。