Я пытаюсь создать то, что я понимаю, как Фабрику Классов в Delphi 2007. Я хочу передать производный тип класса в функцию и заставить его создать объект этого типа класса.
Я нашел несколько хороших ссылок, таких как Как я могу создать объект Delphi из ссылки на класс и обеспечить выполнение конструктора? , но я все еще не могу заставить его работать достаточноправо.В приведенном ниже тесте я не могу заставить его вызывать производный конструктор, хотя отладчик сообщает мне, что oClass - это TMyDerived.
Я думаю, что я запутался в чем-то фундаментальном здесь и мог бы использовать некоторые объяснения.Спасибо.
program ClassFactoryTest;
{$APPTYPE CONSOLE}
uses
SysUtils;
// BASE CLASS
type
TMyBase = class(TObject)
bBaseFlag : boolean;
constructor Create; virtual;
end;
TMyBaseClass = class of TMyBase;
constructor TMyBase.Create;
begin
bBaseFlag := false;
end;
// DERIVED CLASS
type
TMyDerived = class(TMyBase)
bDerivedFlag : boolean;
constructor Create;
end;
constructor TMyDerived.Create;
begin
inherited;
bDerivedFlag := false;
end;
var
oClass: TMyBaseClass;
oBaseInstance, oDerivedInstance: TMyBase;
begin
oClass := TMyBase;
oBaseInstance := oClass.Create;
oClass := TMyDerived;
oDerivedInstance := oClass.Create; // <-- Still calling Base Class constructor
end.