@WhiteNinja

C#: Как рекурсивно наследовать свойства класса?

Добрый день!
Прошу подсказать, как реализовать следующее:

Есть класс BaseItem:

public abstract class BaseItem
{
	public int Id { get; set; }
	public string Title { get; set; }
	public IEnumerable<BaseItem> Childs { get; set; }
	
	public BaseItem() 
	{
		Childs = new List<BaseItem>();
	}
}

От него наследуется класс Item

public class Item : BaseItem 
{
	
}


Необходимо, чтобы в свойстве Childs класса Item также находился список Item's (себя же), а не BaseItem's.

Вопрос, как организовать рекурсивное свойство со списком?

Заранее огромное спасибо за любую подсказку!
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 2
Поймите меня правильно, вам нужно почитать сначала теорию про ООП и т.п.. Поскольку ваш вопрос на уровне школьника, который 2-3 недели как решил стать программистом.

А посуществу в Childs можно запросто запихнуть и Item, и любого наследника от BaseItem. Но если вам нужно чтобы в Childs, который в Item, были только Item, то тут вам помогут generic типы. Я специально не буду писать код как это сделать, поскольку потом вы точно ничего не прочитаете и зададите еще кучу глупых вопросов. Почитаете литературу это же для вашего блага, вы узнаете много нового и интересного.
Ответ написан
yarosroman
@yarosroman Куратор тега C#
C# the best
Модификатор new вам в помощь

public abstract class BaseItem
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public virtual IEnumerable<BaseItem> Childs { get; set; }

        public BaseItem()
        {
            Childs = new List<BaseItem>();
        }
    }

    public class Item : BaseItem
    {
        public new IEnumerable<Item> Childs { get; set; }
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы