.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回车提交事件浅析

    ASP.NET回车提交事件浅析

    ASP.NET回车提交事件是什么呢?是如何实现的呢?ASP.NET回车提交事件的执行需要注意什么细节呢?那么本文就向你介绍详细的内容,希望对你有所帮助
    2012-01-01
  • asp.net BackgroundWorker之在后台下载文件

    asp.net BackgroundWorker之在后台下载文件

    下载文件是常见任务,通常情况下,最好以单独的线程来运行这项可能很耗时的操作。使用 BackgroundWorker 组件可以用非常少的代码完成此任务
    2011-12-12
  • ASP.NET笔记之文章发布管理小系统案例

    ASP.NET笔记之文章发布管理小系统案例

    本篇文章小编为大家介绍,ASP.NET笔记之文章发布管理小系统案例。需要的朋友参考下
    2013-04-04
  • Redis中pop出队列多个元素思考

    Redis中pop出队列多个元素思考

    本文主要介绍了Redis中pop出队列多个元素思考,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • asp.net+ajax的Post请求实例

    asp.net+ajax的Post请求实例

    这篇文章主要介绍了asp.net+ajax的Post请求实现方法,实例分析了Ajax的发送post数据的原理与技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • ASP.NET MVC使用typeahead.js实现输入智能提示功能

    ASP.NET MVC使用typeahead.js实现输入智能提示功能

    这篇文章介绍了ASP.NET MVC使用typeahead.js实现输入智能提示功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • asp.net BasePage类+Session通用用户登录权限控制

    asp.net BasePage类+Session通用用户登录权限控制

    判断用户是否登录,常用的方法就是通过Session来控制。
    2010-05-05
  • ASP.NET通过更改Url进行页面传值的实现代码

    ASP.NET通过更改Url进行页面传值的实现代码

    这篇文章主要介绍了ASP.NET通过更改Url进行页面传值的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • asp.net access添加返回自递增id的实现方法

    asp.net access添加返回自递增id的实现方法

    今天花了一点时间研究了这个问题,除此之外,还顺带研究了小孔子cms添加数据的过程,access添加返回自递增id也是从小孔子cms中研究出来的。
    2008-08-08
  • .NET Core 线程池(ThreadPool)底层原理源码解析

    .NET Core 线程池(ThreadPool)底层原理源码解析

    文章介绍了.NET Core线程池的结构和工作原理,包括生产者-消费者模型、线程饥饿问题、线程池增长策略等,同时,对比了Task和线程池在并发编程中的优缺点,并推荐使用Task来优化线程池的使用,感兴趣的朋友一起看看吧
    2024-11-11

最新评论