您的位置:首页 > 编程语言 > ASP

ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象

2016-07-17 23:57 555 查看
  本文标题说是"深入理解Controller"其实有点“标题党”的味道了。本篇只会探讨"Controller"的激活机制,也就是如何创建Controller的并调用的。本篇不是讲解Controller底层相关知识,不过后期博文会对其进行介绍。

0X1 DefaultControllerFactory

  DefaultControllerFactory对象可以说是Controller创建激活的一个重要类,在默认情况下(这里的默认情况指没有向MVC指定负责创建Controller的类)DefaultControllerFactory负责Controller的创建于激活。本文讨论的重点将会放在Controller的创建。

  我们先看DefaultControllerFactory类的几个方法

public class NinjectDependencyResolver : IDependencyResolver
{
private IKernel Kerner;

NinjectDependencyResolver()
{
Kerner = new StandardKernel();
}

public void Registet<To, Form>() where Form : To
{
Kerner.Bind<To>().To<Form>();
}
public object GetService(Type serviceType)
{
return Kerner.TryGet(serviceType);
}

public IEnumerable<object> GetServices(Type serviceType)
{
return Kerner.GetAll(serviceType);
}
}


View Code
  如需使用我们自定义的NinjectDependencyResolver,我们需要在Global.asax中对其进行注册:

protected void Application_Start()
{
//其他操作
NinjectDependencyResolver ninjectDependencyResolver = new NinjectDependencyResolver();
ninjectDependencyResolver.Registet<Controller, Controllers.HomeController>();//这里的Controller应该是具体类型,这里这样写只是为了演示
DependencyResolver.SetResolver(ninjectDependencyResolver);
}


  再次运行我们的程序,则会看到效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: