Унаследованный класс C# с производными свойствами другого базового класса

#c# #inheritance #polymorphism #multiple-inheritance

Вопрос:

Пожалуйста, извините меня, если вы находите название плохим. Моя проблема в том, что у меня есть базовый класс A со свойством x . У меня есть производный класс A' со свойством x' . И когда я это реализую, это больше похоже на то, что показано ниже.

 public class Vehicle
{
    public List<Part> Parts {get; set;}
    public string Name {get; set;}

    public void GetParts()
    {
        this.Parts.Foreach(x => Console.WriteLine(x.Name));
    }
}

public class Part
{
    public string Name {get; set;}
    public string Place {get; set;}
}

public class CarPart : Part
{
    public string Setting {get; set;}
}

public class Car : Vehicle
{
    public new List<CarPart> Parts {get; set;}
}
 

Когда я реализую вышеуказанные классы, при доступе к частям свойств я могу получить доступ только к идентификатору объекта.
Например, в приведенном ниже коде :

 var xuv300 = new Car();
xuv300.GetParts();
 

Ничего не печатается, хотя я добавляю детали xuv300 . Поскольку существуют два разных свойства, а базовый класс представлен частями, свойство не имеет никаких значений.

Пожалуйста, помогите мне, как решить эту проблему.

Комментарии:

1. Избавиться от собственности в Car классе? Зачем вам нужно скрывать унаследованный элемент?

2. и, возможно, сделать Vehicle общим. т. е. class Vehicle<T> where T:Part {... List<T> Parts {get; set;}...} и Car : Vehicle<CarPart>

3. новый модификатор скрывает свойство в вашем базовом классе, поэтому введение «совершенно нового» свойства с тем же именем приведет к пустой строке, потому что ваш базовый класс не заботится о вашем новом поле.

4. Похоже, вам не хватает части реализации, в которой вы задаете свойство «Детали» со списком деталей. Возможно, вы забыли добавить код в пример. Как есть, здесь нет деталей для печати. Иначе говоря, запишите все, что я поместил в следующие цитаты … «»