比方說,我有以下代碼: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由Delphi窗體按鈕單擊事件被調用。
現在我的問題: 有沒有更好的方式來實例化類TMyClass2? 在我的情況下無法注入到類TMyClass1中,TMyClass2實例的生命週期僅在ButtonEvent內部。 下一個調用ButtonEvent應該使用不同的實例...在這個Spring4D中,AFAIK,方法參數注入或局部變量注入是不可能的,是不是?
好的......現在我明白了......工廠是一個很好的解決方案。 使用代理如java spring的方法或參數注入怎麼辦? 這種面向方面的編程也可能有一天... – Markus
轉到我們的論壇(鏈接在我們的項目頁面上),並用一些例子問那個問題,這樣我就能明白你到底想要達到什麼目的。我不認爲這種討論可以或應該在這裏處理。 –
我所看到的,Spring容器有一個方法來註冊工廠: TContainer.RegisterFactory 1.是否有關於如何使用它的一個例子嗎? 2.我可以讓spring4d爲注入的實例注入嗎? – Markus