Autofac使用代码

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<IsysUserInfoBLL>();
//5.01将容器存入缓存里 (全局缓存)方便后面取出来使用
CheckManager.SetData(Keys.Autofac, container);
//获取autofac容器对象
// CheckManager.GetData<IContainer>(Keys.Autofac);
//6.0 将container交给MVC底层调用替换DefaultControllerFactory进行工作
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}

时间: 2024-08-28 02:04:19

Autofac使用代码的相关文章

Autofac使用代码方式进行组件注册【不需要依赖】

public class AutofacFactory2     {         IBank bank;         public AutofacFactory2()         {             Type objTypeService  = Type.GetType("Cropay.Bank.IBank");             Type objTypeA = Type.GetType("Cropay.Bank.Bank50");    

Autofac 依赖注入 ASP.NET MVC5 插件机制中插件的简单实现

一.前言 由于项目业务复杂,创建了多个插件并把他们放在了不同的项目中,项目使用AutoFac做的IOC:但是主项目可以注入,插件注入失败, 没有为该对象定义无参数的构造函数.下面就一步一步注入插件项目. 二.新建带有插件的项目 参考: ASP.NET MVC5 插件化机制简单实现 项目结构如下图: 三.建立DomainServices类库 新建一个ITestService接口,代码如下: namespace DomainServices { public interface ITestServi

记录对依赖注入的小小理解和autofac的简单封装

首先,我不是一个开发者,只是业余学习者.其次我的文化水平很低,写这个主要是记录一下当前对于这块的理解,因为对于一个低水平 的业余学习者来说,忘记是很平常的事,因为接触.应用的少,现在理解,可能过段时间就会忘了,自己记录下来应该可以少走些弯路,以免从头再来查找资料. 另外,如果我的记录能帮忙到一些朋友的话,也难免会有些小满足的.学习的门槛除了理解能力,绝大部分来自于英文水平和专业术语,我希望的是我能用比较通俗易懂的表达,获得大家的理解,更希望大牛们是如是做的,所以写这个更希望的是能得到大牛的帮助.

ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)

前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期. 这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 目录 ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入) ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截) 正文 上

ASP.NET MVC5 插件机制中插件的简单实现

Autofac 依赖注入 ASP.NET MVC5 插件机制中插件的简单实现 一.前言 由于项目业务复杂,创建了多个插件并把他们放在了不同的项目中,项目使用AutoFac做的IOC:但是主项目可以注入,插件注入失败, 没有为该对象定义无参数的构造函数.下面就一步一步注入插件项目. 二.新建带有插件的项目 参考:ASP.NET MVC5 插件化机制简单实现 项目结构如下图: 三.建立DomainServices类库    新建一个ITestService接口,代码如下: namespace Dom

错误和问题解决的成本

问题描写叙述 错误 数据收集 根本原因 版本号   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的下面情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 全部的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(只在先进先出/后进先出) 5.这些症状的不论什么一个意味着 MMT-CQL不匹配

CS.动态加载DLL.动态生成.运行代码.BS.AutoFac管理实现类

以英雄联盟为例.界面上经常有Load....xxxx.dll.一般都是加载子系统.比如装备系统.英雄系统等.在实际开发中很多项目非常庞大.都会分割成独立子解决方案开发.后期就需要加载回来.一般都是利用代码动态加载. ....这个时间点貌似不能上传图片.将就点看 Father //母解决方案.登陆页面和Load.加载子解决方案Dll页面 Father1//母解决方案下的类库有共通的父类.所有的子解决方案都会加载此类库 Son//子解决方案.装备系统.英雄系统 -------------------

[转]依赖注入框架Autofac的简单使用

Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上也是很高的.于是,今天抽空研究了下它.下载地址:http://code.google.com/p/autofac/downloads/list 1)解压它的压缩包,主要看到Autofac.dll,Autofac.Configuration.dll,这也是本篇文章重点使用的Autofac的类库. 2)创建一个控制台工程,并且引用以上的DLL文件.创建一个数据库操作接

【翻译Autofac的帮助文档】1.入门指南

[写在前面]尝试做完一件工作之外自我觉得有意义的一件事,那就从翻译Autofac的帮助文档吧. 入门指南 将Autofac集成你的应用程序的步骤通常很简单,一般是: 时刻以IOC(控制反转)的思想来规划你的应用程序 在你的Porject中添加Autofac引用 按照如下步骤设计应用程序的启动环节 创建一个ContainerBuilder 向ContainerBuilder注册组件 通过ContainerBuilder的Build()方法获得Container(后续需用到) 在应用程序运行环节时,