我正在使用unity来解析对象图。
public interface ISessionManager
{
}
public class DefaultSessionManager : ISessionManager
{
}
public class OnCallSessionManager : ISessionManager
{
}
我有在构造函数
上使用ISessionManager的服务类public class CustomerService
{
public class CustomerService(ISessionManager sessionManager)
{
}
}
在对象图之上。我有一个viewmodel类和一个数据管理器类。
public class ViewModel(CustomerService customerService)
{
}
public class DataManager(CustomerService customerService)
{
}
现在我想使用不同的ISessionManager解析ViewModel和DataManager。
对于ViewModel
课程,我需要DefaultSessionManager
和OnCallSessionManager
DataManager
。我怎么能这样做?
提前致谢。
答案 0 :(得分: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")));
它很难看,但它应该可以解决问题。