我想知道为什么IDependencyResolver不是通用的。 GetService
和GetServices
正在返回对象,我在想是否有充分的理由不在此处使用泛型而不是object
?
我在我的MVC 5应用程序中使用ninject作为自定义依赖项解析器。
public class NinjectDependencyResolver:IDependencyResolver
{
public object GetService(Type serviceType)
{
//ninject specific implementation
}
public IEnumerable<object> GetServices(Type serviceType)
{
//ninject specific implementation
}
}
谢谢
答案 0 :(得分:1)
Brad Wilson在这篇文章中解释了这一点(http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html)。基本上,有通用版本,但它们是扩展方法。这是一段摘录:
您可能已经注意到没有GetService的通用版本 或IDependencyResolver上的GetServices。我们提供扩展方法 对于提供这些通用方法的IDependencyResolver: 通过使用扩展方法,我们简化了实现 IDependencyResolver,而界面的使用者也可以使用 早期绑定/强类型泛型版本(并避免使用 他们的代码)或后期/弱类型的版本(有时很有用 当您想要创建您期望的具体类型的实例时 实现特定的接口或从特定的抽象派生 基类)。
我无法找到或确定的是MVC 5是否仍然如此。