Хорошо, у меня есть базовый класс, который мы назовем TFruit
. Отсюда есть различные потомки, такие как TApple
, TOrange
и так далее. Мне нужно сохранить свойства классов-потомков в файл.
Чтобы иметь возможность создать правильный класс при загрузке данных, каждый класс должен иметь ID
, который я записываю в файл перед записью фактических данных. В настоящее время я придумал следующий способ сделать это:
type
TFruit = class
const ID = 0;
end;
TApple = class(TFruit)
const ID = 1;
end;
TOrange = class(TFruit)
const ID = 2;
end;
Тестируя это, я обнаружил, что мне нужно быть очень осторожным при выборе класса, который я объявляю. Если я использую это:
var Fruit: TFruit;
Fruit := TOrange.Create;
... тогда Fruit.ID
вернет ноль . Однако объявление Fruit
как TOrange
даст ожидаемый результат Fruit.ID = 2
(кто-нибудь знает почему?)
В общем, делаю ли я это право или есть лучший способ сделать это? Необходимость создавать функцию класса и возвращать оттуда значение кажется очень уродливым по сравнению (дополнительное объявление функции, реализация и код).