Используя Microsoft Unity, я регистрирую следующий тип:
container.RegisterType(typeof(IRepository<>), typeof(NHibernateRepository<>));
В ASP.NET MVC 2 я мог тогда сделать следующее:
var repository = ServiceLocator.Current
.GetInstance(typeof(IRepository<>).MakeGenericType(bindingContext.ModelType));
Но в версии 3. У меня естьудалил все вхождения Service Locator и вместо этого внедрил новый Resoldency Resolver.Поэтому я изменил вышеупомянутое значение на:
var repository = DependencyResolver.Current
.GetService(typeof(IRepository<>).MakeGenericType(bindingContext.ModelType));
Однако теперь это возвращает ноль.
Вот моя реализация средства разрешения зависимостей, если это помогает:
public class UnityDependencyResolver : IDependencyResolver {
private readonly IUnityContainer _container;
public UnityDependencyResolver(IUnityContainer container) {
_container = container;
}
public object GetService(Type serviceType) {
return typeof(IController).IsAssignableFrom(serviceType) ||
_container.IsRegistered(serviceType) ?
_container.Resolve(serviceType) : null;
}
public IEnumerable<object> GetServices(Type serviceType) {
return _container.ResolveAll(serviceType);
}
}
IБуду очень признателен, если кто-нибудь покажет мне, что я сделал неправильно.Спасибо