#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. Похоже, вам не хватает части реализации, в которой вы задаете свойство «Детали» со списком деталей. Возможно, вы забыли добавить код в пример. Как есть, здесь нет деталей для печати. Иначе говоря, запишите все, что я поместил в следующие цитаты … «»