为什么IDependencyResolver不通用?

时间:2014-06-19 17:59:16

标签: c# asp.net-mvc

我想知道为什么IDependencyResolver不是通用的。 GetServiceGetServices正在返回对象,我在想是否有充分的理由不在此处使用泛型而不是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
    }
}

谢谢

1 个答案:

答案 0 :(得分:1)

Brad Wilson在这篇文章中解释了这一点(http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html)。基本上,有通用版本,但它们是扩展方法。这是一段摘录:

  

您可能已经注意到没有GetService的通用版本   或IDependencyResolver上的GetServices。我们提供扩展方法   对于提供这些通用方法的IDependencyResolver:   通过使用扩展方法,我们简化了实现   IDependencyResolver,而界面的使用者也可以使用   早期绑定/强类型泛型版本(并避免使用   他们的代码)或后期/弱类型的版本(有时很有用   当您想要创建您期望的具体类型的实例时   实现特定的接口或从特定的抽象派生   基类)。

我无法找到或确定的是MVC 5是否仍然如此。