всем!
У меня проблема с разрешением именованных регистраций в Unity 2.0 с использованием MVC3 IDependencyResolver.
Я настроил регистрации типов как
public class Implementations
{
private IUnityContainer unityContainer;
internal Implementations()
{
this.unityContainer = new UnityContainer();
}
public static IUnityContainer GetUnityContainer()
{
Implementations implementations = new Implementations();
implementations.RegisterImplementations();
return implementations.unityContainer;
}
private void RegisterImplementations()
{
this.unityContainer
.RegisterType<IService, TestService>()
.RegisterType<IService, TestService2>("ts2");
}
}
Код для IDependencyResolveris
public class UnityDependencyResolver : IDependencyResolver
{
IUnityContainer container = null;
string namedRegistration = null;
public UnityDependencyResolver(IUnityContainer container, string name)
{
this.container = container;
this.namedRegistration = name;
}
public object GetService(Type serviceType)
{
try
{
return this.container.Resolve(serviceType, this.namedRegistration);
}
catch
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return this.container.ResolveAll(serviceType);
}
catch
{
return new List<object>();
}
}
}
и вызов метода в Application_Start равен
protected void Application_Start()
{
var dependency =
new UnityDependencyResolver(Implementations.GetUnityContainer(), "ts2");
DependencyResolver.SetResolver(dependency);
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters( GlobalFilters.Filters );
RegisterRoutes( RouteTable.Routes );
}
Что бы я хотел сделать, будь то в UnityDependencyResolver или любым другим способом, это разрешить мой именованный экземпляр или экземпляр по умолчаниюесли имя не существует.Текущий код всегда преобразуется в экземпляр по умолчанию (без именных).
У кого-нибудь есть идеи, как это сделать?
Спасибо.