ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Autofac使用代码

2021-10-27 16:35:01  阅读:187  来源: 互联网

标签:Autofac Assembly 代码 autofac dll bulider 使用 using


Autofac 的使用
--工厂使用autofac.dll来代替 ,实现面向接口编程(IOC-控制反转,DI-依赖注入)

控制反转
依赖注入

autofac.dll 是实现了控制反转和依赖注入思想的一套组件
在MVC中,当网站启动的时候,应该在application_start()方法调用autofac.dll的一些列
方法对dal层和bll层进行注册
在运行过程中指定dal和bll层的程序集名称,自动去bin目录扫描

1、将dal和bll层的实现项目的生成路径修改为:..\UInamespace\bin
2、application_start()写代码调用

引用Autofac.dll 和 Autofac.Integration.Mvc.dll

修改BLL 和 DAL dll 生成输出路径 到 UI (..\UInamespace\bin\)

UI Global.asax 中 AutofacConfig.Register();

using Autofac;
using System.Reflection;
using Autofac.Integration.Mvc;
using System.Web.Mvc;
using IBLL;
using common;
public class AutoFacConfig
{
public static void Register()
{
//1.0 构造一个容器创建者对象
var bulider = new ContainerBuilder();

//2.0 告诉bulider将来控制器类去哪些程序中扫描
Assembly controllerAss = Assembly.Load("crm.Site");
bulider.RegisterControllers(controllerAss);

//3.0 告诉bulider将itcast.crm18.Dal中的所有类创建其对象实例存储在autofac的内部
//以此类的接口形式进行存储
Assembly dalAss = Assembly.Load("crm.DAL");
bulider.RegisterTypes(dalAss.GetTypes()).AsImplementedInterfaces();

//4.0 告诉bulider将itcast.crm18.Services中的所有类创建其对象实例存储在autofac的内部
//以此类的接口形式进行存储
Assembly servicesAss = Assembly.Load("crm.BLL");
bulider.RegisterTypes(servicesAss.GetTypes()).AsImplementedInterfaces();

//5.0 创建一个autofac的正真容器
IContainer container = bulider.Build();
//aotufac容器有一个方法在后面验证登录取cookie对象用
//aotufac容器有意个方法Resolve(),只需要提供一个借口名称 就能以接口的形式返回实现了这个接口的子类对象
//IsysUserInfoBLL userinfo= container.Resolve();
//5.01将容器存入缓存里 (全局缓存)方便后面取出来使用
CheckManager.SetData(Keys.Autofac, container);
//获取autofac容器对象
// CheckManager.GetData(Keys.Autofac);
//6.0 将container交给MVC底层调用替换DefaultControllerFactory进行工作
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}

转载于:https://www.cnblogs.com/dianshen520/p/4349148.html

标签:Autofac,Assembly,代码,autofac,dll,bulider,使用,using
来源: https://www.cnblogs.com/wamgzuo/p/15471307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有