2

の自動仮想ファクトリ機能を使用しようとしています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'TMyComponent2whenAServiceName = 'Service2'などを解決してもらいたいです。

どうすればこれを達成できますか?

4

1 に答える 1