Я столкнулся с проблемой правильного создания экземпляра объекта из типа, разрешенного контейнером Framework Spring4D.Delphi: вызывать родительский конструктор с использованием интерфейса (Spring4D framework)
У меня есть класс:
type
TSurvey = class (TInterfacedObject, ISurvey)
private
_id : Integer;
_organization : IOrganization;
function GetId() : Integer;
procedure SetId (const value : Integer);
function GetOrganization() : IOrganization;
procedure SetOrganization (const value : IOrganization);
public
property Id : Integer read GetId write SetId;
property Organization: IOrganization read GetOrganization write SetOrganization;
end;
...
initialization
GlobalContainer.RegisterType<TSurvey>.Implements<ISurvey>.InjectField ('_organization');
...
Я использую GlobalContainer для создания экземпляра объекта:
survey := GlobalContainer.Resolve<ISurvey>;
survey.Organization.Id := 5;
и все это хорошо и прекрасно работает.
Теперь я хочу, чтобы создать класс-потомок для TSurvey:
type
TFieldSurvey = class (TSurvey)
...
end;
И вопрос заключается в том, чтобы исправить экземпляр объекта для класса TFieldSurvey?
Если я использую Create(), то я получаю исключение:
fieldSurvey := TFieldSurvey.Create();
fieldSurvey.Organization.Id := 5 <- exception is here
Должен ли я явно вызвать конструктор для области организации в TFieldSurvey конструктору, или есть другой способ? Например, используя GlobalContainer?
Заранее спасибо.
Название полностью вводит в заблуждение, потому что на самом деле вы спрашиваете, как правильно создать агрегацию. –
Я понимаю это сейчас, спасибо. – Aptem