2011-01-25 4 views
4

たとえば、次のクラスでは、プロパティがCupboardShelfにある必要があります。どうすればいいのですか?あなたはまた、セッターのプライベートを作成し、コンストラクタでそれを設定するかを選択することができますC#クラスで親プロパティを持つ方法は?

public class Cupboard 
{ 
    public Room Parent { get; set; } 
} 

public class Room 
{ 
    public List<Cupboard> Cupboards { get; set; } 
} 

public class Cupboard 
{ 
    public Room Parent 
    { 
     get 
     { 

     } 
    } 
    public List<Shelf> Shelves { get; set; } 
} 

public class Shelf 
{ 

} 
+3

これは本当にあなたの質問に関連していないですが、私はそれは私が非常に懐疑的になり、公共セッターで '一覧'プロパティを見るたびに。それは決して良い考えではありません。 –

答えて

6

あなたが自動的に実装プロパティを使用することができます。

public class Cupboard 
{ 
    public Cupboard(Room parent) 
    { 
     this.Parent = parent; 
    } 

    public Room Parent { get; private set; } 
} 

使用法:

Room room = new Room(); 
Cupboard cupboard = new Cupboard(room); 
Console.WriteLine(cupboard.Parent.ToString()); 

すべてはあなたが知らなくても、オブジェクトの親である部屋を見つけることができるようにインターフェイスを作成することができます親の部屋を持っている多くのオブジェクトがある場合その特定のタイプ。

interface IRoomObject 
{ 
    Room { get; } 
} 

public class Cupboard : IRoomObject 
{ 
    // ... 
} 
+0

私は間違って何をしているのかわからない、私はあなたが言及した最初の2つの方法を試して、それはまだ親のnullを示しています。 実際にはWCFサービスで、LINQ – gangt

+0

@ gangtを使用してxmlデータからフィールドを取り込んでいます。2番目の例を使用できる方法を示すコードをいくつか追加しました。 –

+0

はここにLINQです するvar部屋=(UIDocument.Descendants( "部屋" の部屋)を選択 新しいルーム { 食器棚の=のUIDocument.Descendants( "食器棚")。(フレーム=> frame.Element(」から== room.Element( "roomid")。値).Select(cupboard =>新しい戸棚 { })ToList() }); – gangt

関連する問題