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配置文件中,如此配置。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值