2012-05-11 58 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; 
    } 
}