[asp.net-mvc]DependencyResolver-如何获取命名的注册吗?

标签: Asp.net-MVC C#
发布时间: 2016/10/9 6:11:55
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用统一 3 MVC 5 应用程序中。我已经注册 2 命名的注册,如下所示︰

container
    .RegisterType<IService, Service>(
          "n1", 
          new PerRequestLifetimeManager(), 
          new InjectionConstructor("n1"))

    .RegisterType<IService, Service>(
          "n2", 
          new PerRequestLifetimeManager(), 
          new InjectionConstructor("n2")));

现在,我挣扎要不回来。IDependencyResolver没有 GetService<T>() 它接受一个名称。

如何能做到?

解决方法 1:

private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() =>
{
    var container = new UnityContainer();
    RegisterTypes(container);
    return container;
});

public static IUnityContainer GetConfiguredContainer()
{
    return container.Value;
}

然后尝试得到如下所示

var service = UnityConfig.GetConfiguredContainer().Resolve<IService>("n1");
赞助商