AutoFac简单入门

Posted TianFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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包括如下两步:

  1. 通过 ContainerBuilder.RegisterXXX注册服务
  2. 通过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简单入门的主要内容,如果未能解决你的问题,请参考以下文章

翻译Autofac的帮助文档1.入门指南

.Net IOC框架入门之——Autofac

Autofac入门

ioc初步理解 简单实用autofac搭建mvc三层+automapper=》ioc(codeFirst)

Autofac

五子棋游戏(简单易懂,入门都能学)