假设,我有以下代码:
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 的下一次调用应该使用不同的实例......
AFAIK,方法参数注入或局部变量注入在 Spring4D 中是不可能的,是吗?