1

所以我有一个包含 ContactCardGroupMemberships 集合的 ContactCardGroup 类:

 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>();
        }
    }

因此,在整个代码中,如果我有一个 ContactCardGroup 成员而不是 GroupId,这将是有帮助的……但这不是引入讨厌的循环引用,尤其是在处置/销毁方面。这些事情有规则/模式吗?

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

4

1 回答 1

2

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

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

但是您是否应该使用它们在很大程度上取决于您要解决的问题。

如果该图与根引用隔离,则两个(或更多)相互引用的事物(对象图)将无法保持活动状态。但是,您可能只是通过在对象图中持有对一件事物的引用而意外地最终持有大型事物图。

于 2013-06-21T01:32:32.110 回答