zoukankan      html  css  js  c++  java
  • 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 的激活方式。

    ...

  • 相关阅读:
    NSAttributedString用法
    xib Nib IB 可视化编程详解
    对虚函数的理解
    QSS的关键词
    Qt发布问题
    Qt使用与问题处理
    Qt术语
    Qt国际化——使用自带翻译包
    Qt 小记
    查看端口及使用进行
  • 原文地址:https://www.cnblogs.com/dragon-L/p/5244253.html
Copyright © 2011-2022 走看看