我想通过容器向下面的类提供构造函数参数,但无法找到注册多个汽车工厂的方法。
TItemFactory = class(TInterfacedObject, IItemFactory)
private
fFactories: TArray<Func<IHost,IItem>>;
protected
function CreateInstance(Host: IHost): TArray<IItem>;
public
constructor Create(Factories: TArray<Func<IHost,IItem>>);
end;
如果我想有多种类型的项目,我可以注册为
GlobalContainer.RegisterType<IItem,TItem1>('Item1');
GlobalContainer.RegisterType<IItem,TItem2>('Item2');
如果我只有一种类型的项目,我可以很容易
GlobalContainer.RegisterType<IItem,TItem1>;
GlobalContainer.RegisterFactory<Func<IHost,IItem>>;
但是我可以看到命名多个汽车工厂是没有意义的,因为它们只引用IItem而不是TITem1或TITem2。
1条答案
按热度按时间xhv8bpkk1#
简单,看看
RegisterFactory
的参数,有两个重载可以指定resolvedServiceName
。