autofac是依赖注入

我们以前要引入一个dal层,是这么写的

private IDal _dao = new Dal()

我们可以看得出,这样写,我们的bll层不光依赖了接口IDal,还依赖了Dal

记得老师说过,层与层直接的依赖,都依赖于接口,也就是只依赖IDal就够了,这样并不是一个最终的解决方案

这里可以用抽象工厂,让工厂为我们创建出一个实现了IDal接口的类,autofac就是这样一个工厂

创建FuturesContest.DAL.Container层

新建一个Container类

using System;
using Autofac;
using FuturesContest.IDAL; namespace FuturesContest.DAL.Container
{
public class Container
{
/// <summary>
/// IOC容器
/// </summary>
public static IContainer FacContainer; /// <summary>
/// 获取IDal的实例化对象
/// </summary>
/// <typeparam name="T">接口</typeparam>
/// <returns>实例化dao</returns>
public static T Resolve<T>()
{
try
{
//如果容器为空,初始化
if (FacContainer == null)
{
Initialise();
}
}
catch (Exception ex)
{
throw new System.Exception("IOC实例化出错!" + ex.Message);
} return FacContainer.Resolve<T>();
} /// <summary>
/// 初始化容器
/// </summary>
public static void Initialise()
{
var builder = new ContainerBuilder();
//格式builder.RegisterType<xxxDal>().As<IxxxDal>().InstancePerLifetimeScope();
builder.RegisterType<UserDal>().As<IUserDal>().InstancePerLifetimeScope();
builder.RegisterType<MenuDal>().As<IMenuDal>().InstancePerLifetimeScope();
builder.RegisterType<MienDal>().As<IMienDal>().InstancePerLifetimeScope();
builder.RegisterType<RuleDal>().As<IRuleDal>().InstancePerLifetimeScope();
builder.RegisterType<ActorDal>().As<IActorDal>().InstancePerLifetimeScope();
builder.RegisterType<PlayTimeDal>().As<IPlayTimeDal>().InstancePerLifetimeScope();
FacContainer = builder.Build();
}
}
}

在Initialise中,以规定的格式,配置出类与接口的映射

这样,在我们想引用一个dal的时候,我们就可以这样写

        private readonly IUserDal _dao = Container.Resolve<IUserDal>();

期货大赛项目|三,autofac简单用法的更多相关文章

  1. 期货大赛项目|四,MVC的数据验证

    上图先看下效果 样式先不说,先了解下数据验证是怎么实现的 一 必须是强类型的视图 二 这些显示提示的话语,都在强类型的实体中 三 必须使用Html.BeginForm或者Html.AjaxBeginF ...

  2. 期货大赛项目|五,表格插件datatatables在MVC中的应用

    系统中都需要表格,我见过最好的表格就是Datatables了,但中文文档有限,英文能力有限,就写一些简单用法 上图看效果先 要了分页和排序 基本用法 引入js和css bundles.Add(new ...

  3. 期货大赛项目|六,iCheck漂亮的复选框

    废话不多说,直接上图 对,还是上篇文章的图,这次我们不研究datatables,而是看这个复选框,比平常的复选框漂亮太多 看看我是如何实现的吧 插件叫iCheck 用法也简单 引入js和css $(& ...

  4. 期货大赛项目|八,ueditor的应用

    百度开发的富文本编辑器还是很不错的,可以已经不维护了 下载ueditor1_4_3_3-utf8-net放到项目中 找到net文件夹下config.json 修改以下两行 "imageUrl ...

  5. 期货大赛项目|十,MVC对js和css的压缩

    在Global.asax中添加两行代码 //默认在调试期间,不会启用js和css的压缩 //下面的语句确保了在调试期间也压缩css和js BundleTable.EnableOptimizations ...

  6. 期货大赛项目|九,fileinput插件的应用

    引入JS和CSS bundles.Add(new ScriptBundle("~/bundles/fileinputJs").Include( "~/Content/ve ...

  7. 期货大赛项目|二,DAL详解

    接口层就不重点讲述了,直接DAL层 DAL层 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  8. 第二节:框架前期准备篇之AutoFac常见用法总结

    一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点点小小的风波,我说我的好,他说他的好,非常容 ...

  9. 转载 AutoFac常见用法总结

    第二节:框架前期准备篇之AutoFac常见用法总结   一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势 ...

随机推荐

  1. mac配置supervisor

    mac配置supervisor 安装 brew install supervisor 启动 一种是手动 supervisord -c /usr/local/etc/supervisord.ini 让s ...

  2. 解决64bit不能连接access的问题

    原有的程序迁移至64位,结果调用数据库时出错,原因是jet驱动没有64位的,得换用64位的驱动程序:   1. 下载运行 AccessDatabaseEngine_x64.exe (http://ww ...

  3. FTP服务器基础设定

    1.安装vsftpd文件服务器 sudo apt-get install vsftpd 2.配置文件:/etc/vsftpd/vsftpd.conf 严格来说,整个 vsftpd 的配置文件就只有这个 ...

  4. 专题2:最长上升子序列LIS

        A HDU 1025 Constructing Roads In JGShining's Kingdom     B POJ 3903 Stock Exchange     C OpenJ_B ...

  5. java后台发送请求并获取返回值

    项目中需要前端发送请求给后端,而后端需要从另一个平台中取数据然后再透传给前端,通过下述代码将其实现.在此记录一下. package com.autotest.utils; import java.io ...

  6. Less常用知识点

    上篇文章介绍了如何安装Less,我们将所有东西都写在.less里面,最后通过命令将.less转换成.css文件,就可以放入到项目里用了.今天了解一些less常用知识点. 1.变量:声明两个变量,一个是 ...

  7. .htaccess技巧: URL重写(Rewrite)与重定向

    URL重定向是.htaccess的重头戏,它可以将长地址转为短地址.将动态地址转为静态地址.重定向丢失的页面.防止盗链.实现自动语言转换等.笔者觉得难点是在正则表达式的运用和理解上.有关htacces ...

  8. Oracle12c 性能优化攻略:攻略1-3: 匹配表类型与业务需求

    注:目录表 <Oracle12c 性能优化攻略:攻略目录表> 问题描述 你刚开始使用oracle数据库,并且学习了一些关于可用的各种表类型的知识.例如:可以在堆组织表.索引组织表等之间支出 ...

  9. Confluence 6 Windows 中以服务方式自动重启修改运行服务的用户

    基于安全的考虑,如果你希望你的 Confluence 不是在系统中以管理员的身份运行或者你使用网络驱动器来存储备份,附件和索引的话,你可以以其他用户来运行 Confluence. 希望修改用户,打开 ...

  10. linux 下安装vscode

    下载安装包 https://code.visualstudio.com/docs/?dv=linux64_deb (注意是deb包) sudo dpkg -i code_1.18.1-15108573 ...