Вместо разных классов для ICarInfo
, которые отличаются только значениями своих свойств, вы можете просто использовать один класс и передать эти значения его конструктору:
public class CarInfo : ICarInfo {
Motor Motor { get; set; }
Wheels Wheels { get; set; }
String Category{ get; set; }
public CarInfo(Motor motor, Wheels wheels, string category)
{
this.Motor = motor;
this.Wheels = wheels;
this.Category = category;
}
}
◆ вообще не нужно путаться с разными типами:
public Class SUV : ICar
{
int ID { get; set; }
ICarInfo Info { get; set; } = new CarInfo(new Motor("SUV"), new Wheels("SUV"), "SUV");
}
Вы также можете использовать дженерики, если вам действительно нужны разные классы:
public interface ICar<T> where T: ICarInfo
{
int ID { get; set; }
T Info { get; set; }
}
public interface ICarInfo
{
Motor Motor { get; set; }
Wheels Wheels { get; set; }
String Category{ get; set; }
}
public Class SUVInfo : ICarInfo
{
Motor Motor { get; set; } = new Motor("SUV");
Wheels Wheels { get; set; } = new Wheels("SUV");
String Category{ get; set; } = "SUV";
}
public Class SUV : ICar<SUVInfo>
{
int ID { get; set; }
SUVInfo Info { get; set; }
}