1

Unity を使用してオブジェクト グラフを解決しています。

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

Using configuration in code you can register something like this:

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")));

Its ugly as hell but it should do the trick.

于 2012-11-08T08:12:42.707 に答える