#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Мне интересно, почему IDependencyResolver не является универсальным. GetService
И GetServices
возвращают объекты, и я думаю, была ли веская причина не использовать дженерики здесь вместо object
?
Я использую ninject в качестве пользовательского средства определения зависимостей в моем приложении MVC 5.
public class NinjectDependencyResolver:IDependencyResolver
{
public object GetService(Type serviceType)
{
//ninject specific implementation
}
public IEnumerable<object> GetServices(Type serviceType)
{
//ninject specific implementation
}
}
Спасибо
Ответ №1:
Брэд Уилсон объясняет это в этой статье здесь (http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html ). По сути, существуют общие версии, но они являются методами расширения. Вот выдержка:
Возможно, вы заметили, что в IDependencyResolver нет универсальных версий GetService или GetServices. Мы предоставляем методы расширения для IDependencyResolver, которые предоставляют следующие общие методы: используя методы расширения, мы упростили реализацию IDependencyResolver, в то время как пользователи интерфейса могут использовать либо универсальные версии с ранней привязкой / строгой типизацией (и избегать приведения в их коде), либо с поздней привязкой / слабой типизациейверсии (иногда полезно, когда вы хотите создать экземпляр конкретного типа, который, как вы ожидаете, реализует определенный интерфейс или является производным от определенного абстрактного базового класса).
Что я не смог найти или определить, так это то, что это все еще относится к MVC 5.
Комментарии:
1. Он все еще находится в стеке codeplex и был обновлен 16 часов назад.