zoukankan      html  css  js  c++  java
  • 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本身功能非常强大,这里只是一个简单的入门,更多功能可以参考官方文档,也有人翻译了中文的版本,质量较高,这里也推荐一下。

  • 相关阅读:
    java8 查找字符串中首次出现2次的字母
    java8 stream编程
    详解--从地址栏输入url到页面展现中间都发生了什么?
    前端aes解密实战小结
    使用高德地图开发需要注意的一些点
    vue-cli项目打包优化(webpack3.0)
    3种web会话管理方式
    web缓存之--http缓存机制
    javascript创建对象的几种方式
    对原型链、闭包的理解
  • 原文地址:https://www.cnblogs.com/TianFang/p/9005057.html
Copyright © 2011-2022 走看看