zoukankan      html  css  js  c++  java
  • Autofac的简单使用

    今天记录一下学习Autofac的过程。

    之前对IoC与DI一直很迷糊,今天研究了前辈们的文章后,才对IoC和DI有了一个初步的了解。感谢前辈们的无私奉献!

    文章地址:

    依赖注入和控制反转的理解,写的太好了。       

    【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3

    什么鬼?明明是记录Autofac的基本使用。。。

    好吧,回到主题。

    首先,构建好一个时间输出的程序:

    public interface IOutput
    {
        void Write(string content);
    }
    public class ConsoleOutput : IOutput
    {
        public void Write(string content)
        {
            Console.WriteLine(content);
        }
    }    
    public interface IDateWrite
    {
        void WriteDate();
    }
    public class TodayWrite : IDateWrite
    {
        private IOutput _output;
    
        public TodayWrite(IOutput output)
        {
            this._output = output;
        }
    
        public void WriteDate()
        {
            this._output.Write(DateTime.Now.ToShortDateString());
        }
    }    
    class Program
    {
        static void Main(string[] args)
        {
         //创建一个输出对象 ConsoleOutput consoleOutput
    = new ConsoleOutput();
         //创建一个日期输出对象,并通过构造函数注入日期输出对象所依赖的输出对象 TodayWrite todayWrite
    = new TodayWrite(consoleOutput);
         //执行输出日期方法 todayWrite.WriteDate(); Console.Read(); } }

    以上是原始实现方式,现在看,它拥有一个合理的关于依赖关系的结构,那么开始搭配Autofac来一起使用吧。

    首先,添加下Autofac的引用。

    打开工具->选择NuGet包管理器->管理解决方案的NuGet程序包

    安装后,不要忘记引用Autofac

    using Autofac;

    接下来重构下 Program 类

    class Program
    {
        private static IContainer Container { get; set; }
    
        static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<ConsoleOutput>().As<IOutput>();
            builder.RegisterType<TodayWrite>().As<IDateWrite>();
            Container = builder.Build();
            WriteDate();
            Console.Read();
        }
    
        static void WriteDate()
        {
            using (ILifetimeScope scope = Container.BeginLifetimeScope())
            {
                var write = scope.Resolve<IDateWrite>();
                write.WriteDate();
            }
        }
    }

    最后贴上 Autofac 的文档地址 : Autofac

  • 相关阅读:
    质数检测器
    《视觉SLAM十四讲》学习日志(一)——预备知识
    C++类的介绍
    Python数据类型解析(基础篇)
    括号匹配详解
    哈夫曼树编码
    分治之归并,快速排序
    洛谷p2216 多次单调队列,扫描矩阵中的最大值减去最小值最的固定大小子矩阵
    洛谷p1886滑动窗口最大最小值 双单调队列
    洛谷p1725 露琪诺 单调队列优化的DP
  • 原文地址:https://www.cnblogs.com/lifuquan/p/7700670.html
Copyright © 2011-2022 走看看