Скажем, у меня есть следующий код:spring4d разрешить локальный ИЗГОТОВЛЕНА класс
interface
type
IMyInterface1 = interface // GUID
procedure ButtonEvent(Sender: TObject);
end;
IMyInterface2 = interface // GUID
procedure DoSomething;
end;
TMyClass1 = class(TInterfacedObject, IMyInterface1)
public
procedure ButtonEvent(Sender: TObject);
end;
TMyClass2 = class(TInterfacedObject, IMyInterface2)
public
procedure DoSomething;
end;
// ...
implementation
procedure TMyClass1.ButtonEvent(Sender: TObject);
var
aIntf2: TMyInterface2;
begin
// Pseudo code:
// aIntf2 := ServiceLocator.GetService<IMyInterface2>;
try
aIntf2.DoSomething;
finally
aIntf2 := nil; // will free the instance...
end;
end;
initialization
// Pseudo code:
// GlobalContainer register IMyInterface1/TMyClass1
// GlobalContainer register IMyInterface2/TMyClass2
// GlobalContainer.Build
end.
Метод ButtonEvent вызывается с помощью формы Дельфи события нажатия кнопки.
Теперь мой вопрос: Есть ли лучший способ создать экземпляр класса TMyClass2? Инъекция в класс TMyClass1 в моем случае невозможна, время жизни экземпляра TMyClass2 находится только внутри ButtonEvent. Следующий вызов ButtonEvent должен использовать другой экземпляр ...
AFAIK, инъекция параметра метода или локальная переменная в Spring4D невозможна, не так ли?
Хорошо ... теперь я понимаю ... завод является хорошим решением для этого. Что касается метода или инъекции параметров с использованием прокси-серверов, таких как java spring? Таким образом, аспектное программирование также возможно в один прекрасный день ... – Markus
Перейдите на наши форумы (ссылка на странице нашего проекта) и задайте этот вопрос там с некоторыми примерами, чтобы я мог понять, чего именно вы хотите достичь. Я не думаю, что такое обсуждение можно или нужно рассматривать здесь. –
Как я вижу, Spring Container имеет способ регистрации фабрики: TContainer.RegisterFactory 1. Есть ли пример того, как его использовать? 2. Могу ли я заставить spring4d делать инъекции для факторизованных экземпляров? – Markus