То, что я хотел бы сделать, - это ввести еще один класс для «Экспорта» вашего автомобиля.
Примерно так.
public class VehicleExporter
{
public string ExportAsJson(Vehicle vehicle)
{
// Do the JSON thing
}
public string ExportAsXML(Vehicle vehicle)
{
// Do the XML thing
}
}
Самое важное в вашем дизайне - не столько ломать открытостьзакрытый принцип, но ответственность за класс транспортного средства.
Когда ваш класс выполняет toString (), он, по сути, пытается сделать что-то вне его ответственности.
Пожалуйста, дайте мне знать, если я смогу уточнить.