2012-05-11 11 views
1

LetterRectという名前のクラスが2つあります。例: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 
} 

LetterRectオブジェクトへの参照をsquare1とsquare2で取得できます。私の最初の解決策は、LetterRectとそれに対応するsquare1とsquare2にlong integerの同じidentificationNumberを与えることでした。しかし、識別番号なしでLetterRectにアクセスする方法はありますか?間違いなく、継承関係はありません。それは、構成または「has-a」関係です。私がJavaで正しく覚えていれば、インナークラスがそれがメンバーであるクラスのインスタンスを直接参照できるインナークラスの概念があります。ですから、square1とsquare2を使ってLetterRectオブジェクトへの参照を取得するより良い方法はありますか?

ありがとうございました!

+1

は、あなたは自分のLetterSquareコンストラクタにLetterRect引数を追加して、あなたの正方形のオブジェクトを初期化するときにそれを渡すことができませんでしたか?必要に応じて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; 
    } 
} 
関連する問題