Как иметь родительское свойство в классе C #? - PullRequest
4 голосов
/ 26 января 2011

Например, в следующих классах мне нужно иметь свойство Parent в Cupboard и Shelf.Как мне это сделать?

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
{

}

1 Ответ

6 голосов
/ 26 января 2011

Вы можете использовать автоматически внедренное свойство:

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

Вы также можете сделать установщик частным и установить его в конструкторе.

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
{
    // ...
}
...