所以我有一个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以来,我对任何编码选择都不再有信心;(
答案 0 :(得分:2)
您可以使用循环引用,它们非常有用。大多数ORM很好地处理它们。
但是,如果你使用序列化库,那么它们可能有点棘手,而且通常不喜欢循环引用。
但是你是否应该使用它们取决于你正在解决的问题。
如果该图与根引用隔离,则两个(或多个)相互引用的事物(对象图)将不会保持活动状态。但是,只要在对象图中保留对一件事的引用,就可能意外地最终坚持大图。