2013-06-21 83 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

你可以有循環引用,他們可以是非常有用的大多數奧姆斯很好地處理這些問題。 。

但是,如果您使用序列庫,那麼他們可能會有點棘手,往往不喜歡循環引用。

,不過你是否應該或不應該使用它們取決於問題你很多正在解決。

如果圖形與根引用隔離,那麼兩個(或多個)彼此擁有引用的對象(對象圖)將不會保持自己的活動狀態。但是,如果您只是在對象圖中保留對某個事物的引用,您可能會意外地結束了對大圖的描述。