我正在使用统一来管理我的应用服务器上的服务,但由于某种原因,我无法让方法“GetAllInstances”工作。奇怪的是,相同类型的“GetInstance”似乎工作正常!
这是配置:
<alias alias="IService" type="Atom.Server.Infrastructure.Interface.Service.IService, Atom.Server.Infrastructure.Interface"/>
<alias alias="IAtomCommandService" type="Atom.CommandServer.AtomCommandService.Interface.IAtomCommandService, Atom.CommandServer.AtomCommandService.Interface"/>
<alias alias="AtomCommandService" type="Atom.CommandServer.AtomCommandService.AtomCommandService, Atom.CommandServer.AtomCommandService"/>
<register type="IService" mapTo="AtomCommandService">
<lifetime type="Singleton"/>
</register>
<register type="IAtomCommandService" mapTo="AtomCommandService">
<lifetime type="Singleton"/>
</register>
这个想法是,当服务器启动时,我需要能够获取所有已配置的 IService 实例来初始化它们。
IUnityContainer container = ConfigureUnityContainer();
UnityServiceLocator locator = new UnityServiceLocator(container);
var single = locator.GetInstance<IService>();
var all = locator.GetAllInstances<IService>().ToList();
正如我所说,单曲有效,但 get all 没有任何回报。即使我从配置中删除了 IAtomCommandService 映射并且只拥有 IService 它仍然无法正常工作。关于我在哪里出错的任何想法?