.net中的DI框架AutoFac简单介绍

 更新时间:2022年07月07日 15:38:27   作者:天方  
这篇文章介绍了.net中的DI框架AutoFac,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

AutoFac是.net程序下一个非常灵活易用,且功能强大的DI框架,本文这里简单的介绍一下使用方法。

安装:

Install-Package Autofac

简单的示例:

static void Main(string[] args)
{
    var builder = new ContainerBuilder();
    builder.RegisterType<ConsoleLogger>().As<ILogger>();
																										
    var container = builder.Build();
    var logger = container.Resolve<ILogger>();
}

简单的说,AutoFac包括如下两步:

  • 通过 ContainerBuilder.RegisterXXX注册服务
  • 通过Container.Resolve获取服务

如果有某一接口服务有多个实现,可以用如下方式获取所有服务。

var loggers = container.Resolve<ILogger[]>();

程序集扫描注册服务

我们也可以通过反射的方式扫描程序集,从而实现自动注册。

var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(dataAccess)
       .Where(t => t.Name.EndsWith("Repository"))
       .AsImplementedInterfaces();

虽然做法粗暴,但在一些简单的场景下还是非常快速有效的。

MEF

我之前介绍过.net framework下自带的MEF框架,它和autofac的思路还是大不相同的。

AutoFac偏向于服务的抽象,无注入,简洁,透明而且不失强大。

MEF则采用反射的方式,服务的提供由代码注入自动完成,更加自动化,但不够透明,它更侧重于解决一组模块间的互相依赖,耦合关系。它用来拆分用它来分析复杂的UI模块,或者构建插件是非常方便的。

参考文档:

AutoFac本身功能非常强大,这里只是一个简单的入门,更多功能可以参考官方文档

到此这篇关于AutoFac框架的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Asp.net response对象与request对象使用介绍

    Asp.net response对象与request对象使用介绍

    这篇文章主要介绍了Asp.net response对象与request对象使用,需要的朋友可以参考下
    2014-04-04
  • 关于中gridview 字符串截取的方法

    关于中gridview 字符串截取的方法

    在Gridview中,如果你的某一列字符串的长度过长,不做处理的话.那么将显示的奇丑无比,可以采取设置样式,将其显示为定长,可以在点击查看的时候,在另一个页面对其进行显示
    2013-06-06
  • ASP.NET的实用技巧详细介绍

    ASP.NET的实用技巧详细介绍

    本文介绍的是ASP.NET的实用技巧,从跟踪页面,表单数据的服务器端验证和跳过表单验证等方面为大家介绍的。希望对你有帮助,一起来看。
    2015-10-10
  • ASP .NET调用javascript中Response.Write和ClientScript.RegisterStartupScript的区别

    ASP .NET调用javascript中Response.Write和ClientScript.RegisterSta

    最近在用ASP .NET的code behind 调用javascript中发现Response.Write不能拿到form的值,而ClientScript.RegisterStartupScript可以。
    2010-12-12
  • asp.net core中如何使用cookie身份验证

    asp.net core中如何使用cookie身份验证

    这篇文章主要介绍了asp.net core中如何使用cookie身份验证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页

    asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页

    ASP.NET 3.5中新增加的ListView控件是一个用于页面数据绑定和界面布局的非常棒的控件,它在ASP.NET 2.0 GridView的基础上做了很多改进,用户在使用时可以控制的元素更多,开发时的灵活性更大了,个人觉得ListView在使用时比DataGrid和GirdView更加顺手。
    2009-11-11
  • 浅谈类型转换操作符is/as

    浅谈类型转换操作符is/as

    浅谈类型转换操作符is/as,需要的朋友可以参考一下
    2013-03-03
  • ASP.NET Core WebAPI实现本地化(单资源文件)

    ASP.NET Core WebAPI实现本地化(单资源文件)

    这篇文章主要介绍了ASP.NET Core WebAPI实现本地化(单资源文件),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • MultiLine 换行后实现读取不换行的具体思路

    MultiLine 换行后实现读取不换行的具体思路

    输入内容中有换行,保存到数据库,直接查看感觉没有换行,但查询结果“以文本格式显示结果”你就会发现 其实是有换行的,下面与大家分享下具体的解决方法
    2013-06-06
  • ASP.NET服务器控件的生命周期分析

    ASP.NET服务器控件的生命周期分析

    这篇文章主要介绍了ASP.NET服务器控件的生命周期分析,较为详尽的讲述了asp.net服务器控件的运行原理与过程,有助于深入了解asp.net程序的运行原理,需要的朋友可以参考下
    2014-11-11

最新评论