вызов метода универсального списка с RTTI

Я не знаю, как это сделать:

Имея эти объекты:

TMyObject = class;

TMyList<T: TMyObject> = class(TList<T>)
public
     function Execute(aParam1, aParam2:string):boolean;
end;

TMyOtherObject = class(TMyObject)

TMyOtherList = class(TMyList<TMyOtherObject>);

Как я могу выполнить функцию «выполнить» через rtti, если я получаю объект TMyOtherList в параметре функции как TObject?

Спасибо.


person Francis Lee    schedule 13.09.2011    source источник
comment
Функция получает ссылку на TObject.   -  person Francis Lee    schedule 13.09.2011
comment
Я думаю, что было бы действительно хорошей идеей описать реальную проблему, которую вы пытаетесь решить, а не спрашивать совета о том, как реализовать для нее ваше решение с псевдострогой типизацией.   -  person Craig Stuntz    schedule 13.09.2011
comment
Привет. Вопрос в том, как вызвать метод из модуля без доступа к конечным классам на основе дженерика (TMyList‹T›). Единица знает только общий. Это возможно?   -  person Francis Lee    schedule 13.09.2011


Ответы (1)


Не беспокойтесь о RTTI, просто используйте приведение:

(aObject as TMyOtherList).Execute(param1, param2);

Если кастинг невозможен, используйте интерфейс.

person David Heffernan    schedule 13.09.2011
comment
Спасибо, Дэвид. Но функция ничего не знает о TMyOtherList. Из-за этого я использую RTTI. Функция работает с метаданными переданного объекта. и вызовите функцию универсального, которая находится в том же блоке функции. - person Francis Lee; 13.09.2011