2013-06-21 79 views
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>(); 
     } 
    } 

所以整个代码将是有益的,如果不是的GroupId,我有一个ContactCardGroup成员......但是不会引入讨厌的循环引用,尤其是在处置/销毁方面。是否存在这样的规则/模式?

好像自从我安装ReSharper的我不再有任何编码选择我做的任何信心;(

回答

2

你可以有循环引用,他们可以是非常有用的大多数奥姆斯很好地处理这些问题。 。

但是,如果您使用序列库,那么他们可能会有点棘手,往往不喜欢循环引用。

,不过你是否应该或不应该使用它们取决于问题你很多正在解决。

如果图形与根引用隔离,那么两个(或多个)彼此拥有引用的对象(对象图)将不会保持自己的活动状态。但是,如果您只是在对象图中保留对某个事物的引用,您可能会意外地结束了对大图的描述。