2012-05-11 139 views
1

我有一個名爲LetterRect的類,其中兩個字段是LetterSquare類型。例如:c#對象組合

public class LetterRect : Microsoft.Xna.Framework.GameComponent 
{ 
    private LetterSquare square1;       
    private LetterSquare square2; 
    private long indentificationNumber; 
    ... other fields that are irrelevant to this question 
} 

我希望能夠通過square1和square2獲得對LetterRect對象的引用。我最初的解決方案是給LetterRect和相應的square1和square2帶有長整數的相同identificationNumber。但是,有沒有方法可以在沒有識別號碼的情況下訪問LetterRect?絕對不存在繼承關係,它是一種構成或「有一種」關係。如果我在Java中沒有記錯,那麼內部類的概念就是內部類可以直接引用它所屬類的實例。那麼,有沒有更好的方法通過square1和square2來獲得對LetterRect對象的引用?

感謝您的幫助!

+1

難道你只不過是將一個LetterRect參數添加到你的LetterSquare構造函數並在初始化方形對象時傳遞它呢?如果您願意,也可以使用DependencyInjection。 –

+0

將父對象傳遞給子對象通常不是好設計。如果孩子需要父母的某些東西(例如某些領域),則只將該特定信息傳遞給孩子。如果您在此過程中遇到問題,您可以向我們提供詳細信息,以便我們爲您提供幫助。 – Servy

回答

1

試試這個;

public class LetterRect : Microsoft.Xna.Framework.GameComponent 
{ 
    private LetterSquare square1; 
    private LetterSquare square2; 
    public LetterRect() 
    { 
     square1 = new LetterSquare(this); 
     square2 = new LetterSquare(this); 
    } 
} 

public class LetterSquare 
{ 
    public LetterRect LetterRectProp { get; private set; } 
    public LetterSquare (LetterRect letterRect) 
    { 
     this.LetterRectProp = letterRect; 
    } 
}