の自動仮想ファクトリ機能を使用しようとしていますSpring4d
。とはいえ、ファクトリー関数ServiceName
内で解決したいものを渡せるようにしたいです。Build()
そのようです :AFactory.Build(AServiceName)
例えば
TMyComponent1 = class(TInterfacedObject, IMyService)
public
constructor Create(AArgument : TObject);
end;
TMyComponent2 = class(TInterfacedObject, IMyService)
public
constructor Create(AArgument : TObject);
end;
TMyComponent3 = class(TInterfacedObject, IMyService)
public
constructor Create(AArgument : TObject);
end;
// Registering components
AContainer.RegisterType<TMyComponent1, IMyService>('Service1');
AContainer.RegisterType<TMyComponent2, IMyService>('Service2');
AContainer.RegisterType<TMyComponent3, IMyService>('Service3');
// Factory interface
IMyFactory = class(IInvokable)
[Guid]
function Build(AArgument : TObject; AServiceName : string) : IMyService;
end;
// Factory registration
AContainer.RegisterType<IMyFactory>.AsFactory();
// Use factory
AContainer.Resolve<IMyFactory>(AObject, 'Service1'); // Should resolve TMyComponent1
TMyComponent1
工場にwhen AServiceName = 'Service1'
、TMyComponent2
whenAServiceName = 'Service2'
などを解決してもらいたいです。
どうすればこれを達成できますか?