asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET MVC 4框架揭秘:Controller的激活(2)[2]


发布日期:2021年12月16日
 
ASP.NET MVC 4框架揭秘:Controller的激活(2)[2]

public class Global : SystemWebHttpApplication

{

protected void Application_Start(object sender EventArgs e)

{

//其他操作

ControllerBuilderCurrentSetControllerFactory(

new DefaultControllerFactory())

}

}

作为默认ControllerFactory的DefaultControllerFactory类型定义如下激活Controller对象的前提是能够正确解析出Controller的真实类型作为CreateController方法输入参数的controllerName仅仅表示Controller的名称我们需要加上Controller字符后缀作为类型名称在DefaultControllerFactory类型被加载的时候(静态构造函数被调用)通过BuildManager加载所有引用的程序集并得到所有实现了接口IController的类型并将其缓存起来在CreateController方法中根据Controller的名称和命名空间从保存的Controller类型列表中得到对应的Controller类型并通过反射的方式创建它

public class DefaultControllerFactory : IControllerFactory

{

private static List<Type> controllerTypes = new List<Type>()

static DefaultControllerFactory()

{

foreach (Assembly assembly in BuildManagerGetReferencedAssemblies())

{

foreach (Type type in assemblyGetTypes()Where(

type => typeof(IController)IsAssignableFrom(type)))

{

controllerTypesAdd(type)

}

}

}

public IController CreateController(RequestContext requestContext

string controllerName)

{

string typeName = controllerName + Controller;

Type controllerType = controllerTypesFirstOrDefault(

c => stringCompare(typeName cName true) ==

if (null == controllerType)

{

return null;

}

return (IController)ActivatorCreateInstance(controllerType)

}

}

返回目录ASPNET MVC 框架揭秘

编辑推荐

ASP NET开发培训视频教程

Microsoft NET框架程序设计视频教程

Java程序性能优化让你的Java程序更快更稳定

Visual C++音频/视频技术开发与实战

[] []

               

上一篇:ASP.NET MVC 4框架揭秘:Controller的激活(2)[1]

下一篇:ASP.NET MVC 4框架揭秘:Controller的激活(3)