zoukankan      html  css  js  c++  java
  • IOC(AutoFac)配置-学习资料

     IOC配置(先安装AutoFacMVC)
    1、创建ioc容器,创建实例
    var builder = new ContainerBuilder();
    2、把当前程序集中的所有的Controller 都注册
    builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
    3、获取所有相关类库的程序集
    Assembly[] assemblies = new Assembly[] { Assembly.Load("RentHouse.Service") };

    RentHouse.Service:对应的Service类库的名称

    4、当请求这个程序集下的接口里面的方法时候。就会返回对应的Services类里面的实现
    builder.RegisterAssemblyTypes(assemblies)
    .Where(type => !type.IsAbstract
    && typeof(IServiceSupport).IsAssignableFrom(type))
    .AsImplementedInterfaces().PropertiesAutowired();

    IServiceSupport: 对应的接口层继承父类(接口层每个接口都继承父类,配置时直接控制父类即可达到对接口层所有接口的控制)
    如果一个实现类中定义了其他类型的接口属性,会自动给属性进行“注入”
    Assign:赋值
    type1.IsAssignableFrom(type2) type2是否实现了type1接口/type2是否继承自type1
    typeof(IServiceSupport).IsAssignableFrom(type)只注册实现了IServiceSupport的类
    避免其他无关的类注册到AutoFac中

    var container = builder.Build();
    5、注册系统级别的DependencyResolver,这样当MVC框架创建Controller等对象的时候都是管Autofac要对象。
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

    直接配置在Global中

    using Autofac;
    using Autofac.Integration.Mvc;
    using HPIT.RentHouse.IService;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Optimization;
    using System.Web.Routing;
    
    namespace HPIT.RentHouse.Admin
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                #region ioc配置
                //1、创建ioc容器,创建实例
                var builder = new ContainerBuilder();
                //2、把当前程序集中的所有的Controller 都注册
                builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
                //3、获取所有相关类库的程序集
                Assembly[] assemblies = new Assembly[] { Assembly.Load("HPIT.RentHouse.Service") };
                //4、当请求这个程序集下的接口里面的方法时候。就会返回对应的Services类里面的实现
                builder.RegisterAssemblyTypes(assemblies)
                .Where(type => !type.IsAbstract
                        && typeof(IServiceSupport).IsAssignableFrom(type))
                        .AsImplementedInterfaces().PropertiesAutowired();
                //如果一个实现类中定义了其他类型的接口属性,会自动给属性进行“注入”
                //Assign:赋值
                //type1.IsAssignableFrom(type2)   type2是否实现了type1接口/type2是否继承自type1
                //typeof(IServiceSupport).IsAssignableFrom(type)只注册实现了IServiceSupport的类
                //避免其他无关的类注册到AutoFac中
    
                var container = builder.Build();
                //5、注册系统级别的DependencyResolver,这样当MVC框架创建Controller等对象的时候都是管Autofac要对象。
                DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
                #endregion
            }
        }
    }
    View Code

    本文来自博客园,作者:{繁星划过天际},转载请注明原文链接:https://www.cnblogs.com/Aliez02/p/14206192.html

  • 相关阅读:
    Android游戏开发实践(1)之NDK与JNI开发02
    SDK接入(1)之Android Facebook SDK接入
    Markdown学习
    SDK接入(3)之iOS内支付(InApp Purchase)接入
    将列【1,2,3】转换为【类别1,类别2,类别3】
    SQL Server 获取日期
    SQL Server 2000 Split方法
    java连接SqlServer2012
    前辈的js学习方法
    js学习笔记
  • 原文地址:https://www.cnblogs.com/Aliez02/p/14206192.html
Copyright © 2011-2022 走看看