我们说,我有以下代码:
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,方法参数注入或局部变量注入,是吗?