来自 APP下载 2019-09-10 15:00 的文章
当前位置: 新萄京娱乐手机版 > APP下载 > 正文

AutoFac学习摘要

依赖注入(调整反转)
科学普及的依赖注入工具:AutoFac,Spring.Net,Unity等
依附注入的诀窍:1.经过构造函数实行注入2.透过质量实行注入

瞩目:在项目中AutoFac的流入有一次,第二遍是将数据访谈层的类注入到工作逻辑层。第三次是将业务逻辑层的类注入到UI层。

AutoFac在MVC的使用

我在APP_Start文件夹中新建了一个类命名叫AutoFacConfig

概念二个静态的无再次来到的措施

public static void Register()

{

  

//1.0 创设一个autofac的容器对象
            var bulider = new ContainerBuilder();
            //1.0.1 获取程序集载入到Assembly对象中
            Assembly controllerDll = Assembly.Load("Study.CRM.Site");
            //1.0.1 告诉autofac对象以后实例化的调整器所存在的主次集是Study.CRM.Site.dll
            bulider.RegisterControllers(controllerDll);

            #region 2.0 仓库储存的登记
            //2.0 利用bulider对象起始创设仓库储存的贯彻类与相应的蕴藏接口的对应关系
            //注意:假诺加了InstancePerHttpRequest() 每一回都以的新的实业进行注入操作

            //注册单个仓库储存来到其相应的接口
            //bulider.RegisterType(typeof(sysFunctionRepository)).As(typeof(IsysFunctionRepository)).InstancePerHttpRequest();

            //注册程序中具有的类到其达成接口
            Assembly repositoryAss = Assembly.Load("Study.CRM.Repository");
            bulider.RegisterTypes(repositoryAss.GetTypes()).AsImplementedInterfaces();

            #endregion

            #region 3.0 业务逻辑层的挂号
            //3.0 利用bulider对象早先创办职业逻辑完毕类与相应的事情逻辑接口的目的关系
            //单个注册专门的工作逻辑类到其对应的接口
            //bulider.RegisterType(typeof(sysFunctionServices)).As(typeof(IsysFunctionServices)).InstancePerHttpRequest();

            //注册业务逻辑程序中的全数类到其促成的接口(AsImplementedInterfaces() 此方法:正是用来机关转成接口的)
            Assembly servicesAss = Assembly.Load("Study.CRM.Services");
            bulider.RegisterTypes(servicesAss.GetTypes()).AsImplementedInterfaces();

            //注册当前程序中项目名称的前缀为sysFunction 的所对应类的实例
            //bulider.RegisterTypes(servicesAss.GetTypes().Where(c => c.Name.StartsWith("sysFunction")).ToArray()).AsImplementedInterfaces();

            #endregion

            //4.0 告诉MVC框架现在颇具调整器的指标的开创专业交给autofac.dll中的调整器工厂来落成
            //特点:会动用调整器中的有参数构造函数创制其目的,同期在制造的进程中,会依据构造函数中的
            //接口参数,将此接口的实际达成类的指标明入
            //4.0.1  依照已经登记好的组装创造此容器对象中享有的映照关系的实际完结
            var container = bulider.Build();
            // 4.0.2 将MVC的调控器对象实例 交由autofac来成立
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

}

 

在global文件中开展挂号

 public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            //注册区域路由法规
            AreaRegistration.RegisterAllAreas();
            //注册全局过滤器
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            //注册网址路由
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //优化js,css文件
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //利用AutoFac完成项目标IOC和DI
            AutoFacConfig.Register();
        }
    }

 

本文由新萄京娱乐手机版发布于APP下载,转载请注明出处:AutoFac学习摘要

关键词: