码迷,mamicode.com
首页 > 编程语言 > 详细

MVC4 基于 Unity Ioc 框架的 ControllerFactory

时间:2016-03-05 11:43:51      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

首先引入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 的激活方式。

...

 

MVC4 基于 Unity Ioc 框架的 ControllerFactory

标签:

原文地址:http://www.cnblogs.com/dragon-L/p/5244253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!