Вы не указали версию Delphi, но если ваша версия поддерживает дженерики, я бы выбрал:
type
TArgList = class( TDictionary< String, Variant > );
type
TBaseFunc = class
private
FArgs: TArgList;
public
function Run: Boolean; virtual; abstract;
public
property Args: TVarList read FArgs write FArgs;
end;
type
TSpecialFunc = class( TBaseFunc )
public
function Run: Boolean; override;
end;
реализация
function TSpecialFunc.Run: Boolean;
begin
// here's where you can access args as variants
end;
, которую вы можете использовать:
ASpecialFunc.Args.AddOrSetValue('ArgumentName', 2012);
таким образом вам придется писать больше кода, но это гораздо более читабельно, ИМХО, и в будущем его легко поймут другие разработчики.
ПРИМЕЧАНИЕ: я не тестировал этот кодтак что, скорее всего, он не скомпилируется.
Это мои два цента, мне очень любопытно, что придут другие (: