MVC4 基于 Unity Ioc 框架的 ControllerFactory

首先引入Untiy框架。 可以在NuGet程序包 管理器中直接安装。

新建 继承DefaultControllerFactory  的UnityControllerFactory:

重写虚方法GetControllerInstance。

   public class UnityControllerFactory : DefaultControllerFactory
    {
        public IUnityContainer UnityContainer { get; private set; }
        public UnityControllerFactory(IUnityContainer unityContainer)
        {
            this.UnityContainer = unityContainer;
        }
        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            if (null == controllerType)
            {
                return null;
            }
            return (IController)this.UnityContainer.Resolve(controllerType);
        }
    }

然后再Global.asax中进行Unity的激活:

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            //如下
            UnityContainer unityContainer = new UnityContainer();
            //IEmployeeRepository 就是需要进行依赖的 仓储层
            unityContainer.RegisterType<IEmployeeRepository, EmployeeRepository>();
            UnityControllerFactory controllerFactory = new UnityControllerFactory(unityContainer);
            ControllerBuilder.Current.SetControllerFactory(controllerFactory);
        }

接下来我们在Controller中需要拟定  依赖属性 的注入方式

Dependency特性 就是告诉我们这个 依赖属性

[Dependency]
 public IEmployeeRepository Repository { get; set; }

还有 是基于 Ninject Ioc 框架  通过 IControllerActivator 或 IDependencyResolver 的激活方式。

...

时间: 2024-12-17 11:55:32

MVC4 基于 Unity Ioc 框架的 ControllerFactory的相关文章

今天研究Unity Ioc 框架

今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录----  -_- 各路大神,引以为鉴呀!

Unity IOC框架使用实例

1.IOC简介 IOC(Inversion of Control), 控制反转 DI (Dependency Injection),依赖注入 IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 2.Unity引入 3.创建单例模式容器类 using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuratio

.NET MVC4 实训记录之一(引入Unity3.0 Ioc框架)

一直在做维护项目,没有机会接触完整的架构,于是自学.NET MVC.自今日起,将自学的过程.遇到的问题以及解决方案记录下来. 在WebApp项目中右键,使用NuGet引入Unity3.0. 引入后项目目录下会自动生成一个Bootstrapper.cs文件. 手动在WebApp根目录下创建IOC.config文件,用于配置IOC规则.(注意:之前看网上教程中的配置文 件,<typeAliases></typeAliases>节点和<unity></unity>

IOC框架之Unity

一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的).也就是说,所有的组件都是

Unity IoC Container创建对象过程

Unity是微软P&P推出的一个开源的IoC框架,最新的官方版本是2.0.Unity之前的版本建立在一个称为ObjectBuild的组件上,熟悉EnterLib的读者,相信对ObjectBuild不会感到陌生.对于EnterLib 5.0之前的版本,ObjectBuild可以说是所有Application Block的基石.ObjectBuild提供一种扩展.可定制的对象创建方式,虽然微软官方没有将ObjectBuild和IoC联系在一起,其本质可以看成是一个IoC框架.在Unity 2.0中,

Unity IOC/DI使用

一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的).也就是说,所有的组件都是

你知道Unity IoC Container是如何创建对象的吗?

[狗刨学习网] Unity是微软P&P推出的一个开源的IoC框架,最新的官方版本是2.0.Unity之前的版本建立在一个称为ObjectBuild的组件上,熟悉EnterLib的读者,相信对ObjectBuild不会感到陌生.对于EnterLib 5.0之前的版本,ObjectBuild可以说是所有Application Block的基石.ObjectBuild提供一种扩展.可定制的对象创建方式,虽然微软官方没有将ObjectBuild和IoC联系在一起,其本质可以看成是一个IoC框架.在Uni

(转)IOC框架Ninject实践总结

http://www.cnblogs.com/jeffwongishandsome/archive/2012/04/15/2450462.html 一.控制反转和依赖注入 Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架.所谓的IOC,即控制反转(Inversion of Control),它是一个经典的面向对象编程法则,它的作用主要是用来帮助应用程序解耦,并把程序分离成一个个松耦合高内聚的模块.控制反转还有一个名字叫依赖注入(Dependency Injection),简称

.Net常见的IOC框架及AOP框架

IOC框架 Unity:微软patterns&practicest团队开发的IOC依赖注入框架,支持AOP横切关注点. MEF(Managed Extensibility Framework):是一个用来扩展.NET应用程序的框架,可开发插件系统. Spring.NET:依赖注入.面向方面编程(AOP).数据访问抽象,.以及ASP.NET集成. Autofac:最流行的依赖注入和IOC框架,轻量且高性能,对项目代码几乎无任何侵入性. Ninject:基于.NET轻量级开源的依赖注入IOC框架 A