zdal配置文件_Autofac的基本使用---4、使用Config配置

准备

使用的表是Student,创建相关的IDAL、DAL、IBLL、BLL层。

使用EF,创建一个Model层,存放edmx文件。

创建一个Infrastructure层,基础设施项目,使用泛型类型。

普通类型的使用

1.APP.Config 配置信息

此处有个需要注意的地方:configSections节点必须要放在configuration节点的最上面,否则运行会报错。这个在MSDN上有说明。

2.Autofac.config配置信息

3.控制台程序代码

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingApps.BLL;usingApps.DAL;usingApps.IBLL;usingApps.IDAL;usingApps.Infrastructure.BaseObject;usingApps.Infrastructure.IBaseInterface;usingApps.Model;usingAutofac;usingAutofac.Configuration;namespaceApps.Con

{classProgram

{static void Main(string[] args)

{#region 普通类型---Student---Config获取配置

var builder = newContainerBuilder();

builder.RegisterModule(new ConfigurationSettingsReader("autofac"));//编译容器完成注册且准备对象解析

var container =builder.Build();//现在你可以使用 Autofac 解析服务. 例如,这行将执行注册的lambda表达式对于 IConfigReader 服务.//但是我们不推荐直接操作容器,这会导致内存泄漏。//当我们解析出一个组件时,依赖于我们定义的lifetime scope,一个新的对象实例会被创建。

using (var scope =container.BeginLifetimeScope())

{//从容器中解析需要使用的组件

var iStudentBLL = scope.Resolve();//调用解析后的组件中的方法

List list =iStudentBLL.GetList().ToList();

Console.WriteLine("List中的数据行:" +list.Count);

}#endregion Console.ReadKey();

}

}

}

(1)使用流程

a.参见Autofac管理注册类的容器实例

var builder = new ContainerBuilder();

b.下面就需要为这个容器注册它可以管理的类型

builder.RegisterType().As();

c.注册泛型,这个地方需要把泛型进行注册,否则无法正常执行

builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).SingleInstance();

builder.RegisterType>().As>().SingleInstance();

d.生成具体的实例

var container = builder.Build();

e.在应用运行期间,你需要从容器生命周期域中解析出组件实例来使用它们。

using (var scope = container.BeginLifetimeScope())  {  }

f.从容器中解析需要使用的组件

var iStudentBLL = scope.Resolve();

g.调用解析出来的组件的方法

List list = iStudentBLL.GetList().ToList();

(2)中间碰到的问题。

在官方文档,http://docs.autofac.org/en/latest/configuration/xml.html#configuring-with-application-configuration-legacy-pre-4-0

其中的配置示例,component节点中。

type属性,是 类完整命名空间(包括类名),类的命名空间(不包括类名)

service属性,是 类完整命名空间(包括类名)

与示例中的区别就是,示例中的service属性值 与type保持一致,均有","逗号 后加类的命名空间。而官方文档中却没有。

当示例也这么编写时,运行就报错了。

泛型类型的使用

当在autofac.config配置文件中,如此配置。

泛型类型的配置失败,无法正常运行,随之放弃。

不知道如何进行泛型类型的配置设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断选择语句switch...case

switch(被检测量){ case 常量1: 语句1; break; case 常量2: 语句2; break; ... deault: 语句N; break; }被检测量的数据类型 基本数据类型&#xff1a;byte、short、int、char引用数据类型&#xff1a;String、enum 穿透 int num 2; switch(num){ case 1: System.out.print…

Java与Python:哪一个最适合您? [信息图]

通过从您的应用程序学习企业APM产品&#xff0c;发现更快&#xff0c;更有效的性能监控。 参加AppDynamics APM导览&#xff01; 在软件开发中&#xff0c;很少有问题比选择编程语言更具分裂性或部落性。 软件开发人员经常以自己选择的工具来强烈地认同自己&#xff0c;将客观…

怎么把php查询到的值显示到下拉框中_RazorSQL for Mac(数据库工具查询)8.5.3

razorsql mac版更新日志变化 查询结果&#xff1a;如果有多个查询结果选项卡&#xff0c;则从查询结果选项卡中选择比较查询结果选项将填充比较工具中的两个查询 漏洞修补 不需要重新启动razorsql才能生效的首选项需要重新启动 自动更新程序不适用于Windows计算机 缺少HBase连接…

docker删除es数据_木杉入门Elasticsearch(4):安装ES

木杉入门本系列的目标是在本地搭建一个Elasticsearch的服务集群&#xff0c;通过在阿里云服务器搭建FRP通道对外提供服务&#xff0c;为小规模应用提供一种高性价比的解决思路。系列内容&#xff1a;木杉入门Elasticsearch(1)&#xff1a;ESXI虚拟机安装CentOS木杉入门Elastics…

MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

文章目录一、常用的 SQL 语句&#xff08;一&#xff09;查看当前登录用户&#xff08;二&#xff09;查看当前数据库&#xff08;三&#xff09;如何查看全部用户&#xff1f;&#xff08;四&#xff09;创建数据库&#xff08;五&#xff09;选择要操作的数据库&#xff08;六…

spock_在扩展Spock时输出给定值

spockSpock是一个Java测试框架&#xff0c;由GradleWare的软件工程师Peter Niederwieser于2008年创建&#xff0c;它可以促进BDD的发展。 利用这个 例如 &#xff0c;一个故事可以定义为&#xff1a; Story: Returns go to stockAs a store owner In order to keep track of …

将serversocket 写在按钮事件中连接不上_Java服务器的模型—TCP连接/流量优化

本文很长哦&#xff0c;但请给我一点时间。通常&#xff0c;我们的应用程序不需要并行处理成千上万的用户&#xff0c;也不需要在一秒钟内处理成千上万的消息。我们只需要应付数十或数百个并发连接的用户&#xff0c;就可以在内部应用程序或某些微服务应用程序中承受如此大的负…

ios 开发设置左滑退出_苹果铃声怎么设置自己的歌?教你用手机快速搞定!

苹果手机铃声怎么设置为自己喜欢的歌曲&#xff1f;由于iOS系统的封闭性&#xff0c;想要给苹果手机更换铃声不像在安卓手机一样那么方便&#xff0c;看到网上很多教程也是需要使用电脑才能完成铃声的设置&#xff0c;有没有不复杂的方法来直接帮我们更换手机铃声&#xff1f;别…

dp括号匹配 网易面试题_面试题:大括号验证

dp括号匹配 网易面试题这是较容易的编码任务之一&#xff0c;但是您仍然可以在一些初步的技术筛选中达到目标。 问题看起来像这样&#xff1a; 给定仅包含字符( &#xff0c; ) &#xff0c; { &#xff0c; } &#xff0c; [和]的字符串&#xff0c;请确定输入字符串是否有效…

MySQL如何删除有外键约束的数据

在数据库中查看外键是否有效,值为1表示外键有效 mysql> select foreign_key_checks; ---------------------- | foreign_key_checks | ---------------------- | 1 | ---------------------- 1 row in set (0.00 sec)将外键的值设置为0&#xff0c;此时…

python绘制动画示例_Python使用matplotlib绘制动画的方法

本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下&#xff1a;matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例&#xff1a;第一个例子使用generator&#xff0c;每隔两秒&#xff0c;就运行函数data_gen&#xff1a;# -*…

基于单片机步进电机ppt答辩_基于MCU和DSP的步进电机控制技术分析

来源 | 控制与传动步进电机已经渗透入我们生活的方方面面&#xff0c;本文介绍了一些重要的步进电机相关技术&#xff0c;为开发人员基本了解步进电机的工作原理提供了足够的信息&#xff0c;同时也介绍了用微控制器或数字信号处理器控制步进电机的方法。步进电机也叫步进器&am…

拼图登陆拼图二维码验证_另一个拼图观点

拼图登陆拼图二维码验证在过去的几周中&#xff0c;围绕Java 9即将发布及其最著名的功能&#xff1a;Java平台模块系统JPMS进行了激烈的辩论。 –以其项目名称Jigsaw更为人所知。 模块系统以正式规范过程的形式引入Java生态系统 – JSR –需要由专家组以最终形式批准。 在该专…

【C++】多线程(四)

这是多线程的最后一篇文章。 std::promise promise 的作用很简单&#xff0c;在一个线程t1中保存一个类型typename T的值&#xff0c;可供相绑定的std::future对象在另一线程t2中获取。事实上&#xff0c;它与future基本是成对出现的。来看下面的例子&#xff1a; //声明一个…

广告设计师如何使用python_设计师必看!高效率工具,30分钟完成别人一天的工作!...

原标题&#xff1a;设计师必看&#xff01;高效率工具&#xff0c;30分钟完成别人一天的工作&#xff01;世界上只有两种物质&#xff1a;高效率和低效率&#xff1b;世界上只有两种人&#xff1a;高效率的人和低效率的人。—— 萧伯纳今天这篇文章主要想和大家分享一个效率工具…

Linux/MacOS/Mac OS 命令终端/命令行如何查找文件/搜索文件和删除文件

文章目录问题一&#xff1a;我要在当前目录下查找名称中含有“Lib”的文件和目录&#xff0c;注意不要在子目录下查找问题二&#xff1a;在当前目录下如何删除名称中含有“abc”的文件和文件夹问题一&#xff1a;我要在当前目录下查找名称中含有“Lib”的文件和目录&#xff0c…

div获取第一个子节点jquery_【antd】Tree组件子节点不完全勾选获取父节点的值

注意⚠️&#xff1a;这篇文章适用于后台返回的树结构比较多的情况下&#xff0c;如果数据比较少的情况下&#xff0c;可以参考我的上一篇文章&#xff0c;操作起来比较简单我们在实际操作tree组件和后台交互的时候一般都是需要将父节点传过去&#xff0c;如图&#xff1a;点击…

java中的jpa_在JPA中处理Java的LocalDateTime

java中的jpa几天前&#xff0c;我在处理JPA中的LocalDateTime属性时遇到问题。 在这篇博客文章中&#xff0c;我将尝试创建一个样本问题来说明该问题以及我使用的解决方案。 考虑以下实体&#xff0c;该实体为特定公司的员工建模– Entity Getter Setter public class Employ…

修改value_Python | 快速修改或命名N个文件夹名称,你会吗?

#欢迎交流&#xff1a;shuilinggan163.com#工作中&#xff0c;经常会遇到需要修改或新建很多文件的文件命&#xff0c;是一件重复且头疼的事情&#xff0c;下面一组Python代码&#xff0c;轻松教你快速实现&#xff01;程序一&#xff1a;根据文件(SSSSSS)新建并命名空文件夹im…

linux离线安装python3.7教程_Linux傻瓜式七步完美安装Python3.7

1 安装依赖包yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc2 下载解压Python3.7# 1 首先切换到桌面cd /home# 2 下载wget http://www.python.org/f…