Я знаю, что название очень широкое - охватывает очень многое!
И я надеюсь, что этот вопрос может развиться в более крупную «информационную вики-штуку» по этим темам.
То, что я узнал - на данный момент:
(пожалуйста, поправьте меня - если вы думаете, что я ошибаюсь, пропускаю или что-то неправильно понял).
Моя проблема заключалась в следующем:
Но к настоящему времени я провел бесчисленное количество часов, пытаясь понять, как решить эту «большую головоломку», лежащую у меня на столе.И я уже получил несколько хороших ответов от некоторых из вас, пользователей SO, но теперь пришло время заставить что-то работать в большем масштабе.
Я рискнул обратиться к Generics с этим: Обобщение и полиморфизм работают вместе
И теперь я как бы застрял на этом: Ситуации, в которых обобщения не работают
Почему у меня возникают проблемы с ковариацией - это из-за моей процедуры класса в моей иерархии.
Так что мне интересно, станет ли Интерфейсы моим следующим смелым ходом в этой «саге». Как «перешагнуть» проблему ковариации. Одно дело - выяснить, что у вас действительно есть эта проблема, другое - «как ее обойти».
Итак, ЕСЛИ у кого-то из вас, хороших людей, «оттуда» есть какое-то мнение по этому поводу - я весь уши. В основном : Скажите мне перейти на интерфейсы (я никогда не делал ничего с нуля). Или .. бросьте мне кость в том направлении, которое вы предложите.
Мой текущий пул источников указан во второй ссылке - сверху.
Вот небольшой отрывок из моего более раннего сообщения , который показывает мою проблему ковариации. Дэвид любезно объяснил - Почему я врезался в кусты .. Но теперь мне нужна информация о - Как бегать по нему.
var
aList : TBaseList; // used as a list parameter for methods
aPersonList : TPersonList;
aCustomerList : TCustomerList;
begin
aPersonList := TPersonList.Create;
aCustomerList := TCustomerList.Create;
aList := aCustomerList; <-- this FAILS !! types not equal ..
end;
С уважением