如果没有对DependencyResolver进行显式注册系统默认使用的是一个类型为DefaultDependencyResolver的对象如下面的代码片段所示这是一个私有类型用于根据类型提供服务实例的GetService方法直接以反射的方式根据类型创建并返回对应的实例对于类型为接口/抽象类或者不曾定义默认公有构造函数的类型我们直接返回Null也就是说在默认的情况下Controller的激活最终是通过对Controller类型的反射来实现的DefaultDependencyResolver的另一个GetServices方法直接返回一个空的对象列表
private class DefaultDependencyResolver : IDependencyResolver
{
public object GetService(Type serviceType)
{
if (serviceTypeIsInterface || serviceTypeIsAbstract)
{
return null;
}
try
{
return ActivatorCreateInstance(serviceType)
}
catch
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
return EnumerableEmpty<object>()
}
}
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战
[] []