我认为使用显式实例化的容器是完全可以接受的。企业库旨在允许您切换和使用其他依赖注入框架而不是 Unity,或者您可以 BYOC(带上您自己的 [Unity] 容器)。
基本上,您只需要创建 Enterprise Library 扩展并将其添加到容器中,然后将容器设置为 Enterprise Library 将使用的服务定位器。
在此示例中,我有一个 app.config,其中配置了一个名为“我的缓存管理器”的 CacheManager:
EnterpriseLibraryCoreExtension coreExtension =
new EnterpriseLibraryCoreExtension();
container.AddExtension(coreExtension);
IServiceLocator locator = new UnityServiceLocator(container);
EnterpriseLibraryContainer.Current = locator;
var cacheManager1 = container.Resolve<CacheManager>("My Cache Manager");
var cacheManager2 = EnterpriseLibraryContainer.Current
.GetInstance<CacheManager>("My Cache Manager");
Debug.Assert(ReferenceEquals(cacheManager1, cacheManager2));