使用Spring4D时,如何在调用GlobalContainer时将字符串值作为参数传递.解析,以便在已解析的类构造函数上使用此字符串值?
我想解决映射到TWorker的类IWorker.TWorker类在它的构造函数中依赖于ITool加上工作者名称的字符串.
我猜的答案在于TValue数组,它可以作为GlobalContainer.Resolve的参数给出,但我不明白如何使用它.
我发现这篇文章关于在调用可能有效的GlobalContainer.Resolve时使用TParameterOverride作为参数,但这个功能似乎已经在Spring4D的1.1版本中消失了.
我想在注册我的类型时避免调用InjectConstructor.
我需要帮助的部分是
GlobalContainer.Resolve<IWorker>([{what do I put here?}]).Work;
Run Code Online (Sandbox Code Playgroud)
这是我的一个小项目
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Spring.Container;
type
IWorker = interface
['{2BBD7E9C-4806-4F01-9B05-9E9DD928D21D}']
procedure Work;
end;
ITool = interface
['{F962209D-4BC3-41C4-9089-0A874632ED1A}']
procedure Use;
end;
TWorker = class(TInterfacedObject, IWorker)
private
FTool: ITool;
FName: string;
procedure Work;
public
constructor Create(tool: ITool; name: string);
end;
THammer = class(TInterfacedObject, ITool)
private
procedure Use;
end;
{ TWorker }
constructor TWorker.Create(tool: ITool; name: string);
begin
FTool := tool;
FName := name;
end; …Run Code Online (Sandbox Code Playgroud)