• 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

  • 相关阅读:
    Aras学习笔记 (8) Aras一个Web站点下创建多个Instances
    WebAPI学习笔记(3)Asp.net调用WebAPI Post方法传递参数
    简单工厂模式
    工厂模式
    文件信息
    C#压缩解压zip 文件
    Creo 2.0 Toolkit 解锁的问题
    Dojo Grid结合Ajax用法
    Aras Innovator时间验证
    Aras Innovator获取项目任务序列号
  • 原文地址:https://www.cnblogs.com/lifuquan/p/7700670.html
Copyright © 2020-2023  润新知