1

我正在使用统一来解决对象图。

public interface ISessionManager
{
}

public class DefaultSessionManager : ISessionManager
{
}

public class OnCallSessionManager : ISessionManager
{
}

我有在构造函数上使用 ISessionManager 的服务类

public class CustomerService
{
    public class CustomerService(ISessionManager sessionManager)
    {
    }
}

在对象图之上。我有一个视图模型类和一个数据管理器类。

public class ViewModel(CustomerService customerService)
{
}

public class DataManager(CustomerService customerService)
{
}

现在我想使用不同的 ISessionManager 来解析 ViewModel 和 DataManager。对于ViewModel我想要的课程DefaultSessionManager和。我怎样才能做到这一点 ?OnCallSessionManagerDataManager

提前致谢。

4

1 回答 1

1

使用代码中的配置,您可以注册如下内容:

var container = new UnityContainer();

container.RegisterType<ISessionManager, DefaultSessionManager>()
  .RegisterType<ISessionManager, OnCallSessionManager>("oncall")
  .RegisterType<CustomerService>()
  .RegisterType<CustomerService>(
    "oncall",
    new InjectionConstructor(
      new ResolvedParameter(
        typeof(ISessionManager),
        "oncall")))
  .RegisterType<ViewModel>()
  .RegisterType<DataManager>(
    new InjectionConstructor(
      new ResolvedParameter(
        typeof(CustomerService),
        "oncall")));

它丑得要命,但它应该可以解决问题。

于 2012-11-08T08:12:42.707 回答