通过配置文件实现对象的创建

Program.cs的代码如下:

public class Program
    {
        /// <summary>
        ///获取或设置容器
        /// </summary>
        private static IContainer Container { get; set; }

        /// <summary>
        /// 定义应用程序的入口点
        /// </summary>
        public static void Main(string[] args)
        {
            InitContainer();
            WriteDate();
           Console.ReadKey();
        }

        /// <summary>
        /// 初始化容器
        /// </summary>
        private static void InitContainer()
        {
            var builder = new ContainerBuilder();

            //通过配置文件实现对象的创建
            //Autofac自带了一个Autofac.Configuration.dll 非常方便地对类型进行配置,避免了程序的重新编译。
            builder.RegisterModule(new ConfigurationSettingsReader());
            Container = builder.Build();
        }

        /// <summary>
        /// 写入的日期
        /// </summary>
        public static void WriteDate()
        {
            using (var scope = Container.BeginLifetimeScope())
            {
                var writer = scope.Resolve<IDateWriter>();
          writer.Write();
         var output = scope.Resolve<IOutput>();
          output.Write("测试内容!");
            }
        }
    }
IDateWriter.cs,IOutput.cs,ConsoleOutput.cs,DateWriter.cs的类:

 public interface IDateWriter
    {
        void Write();
    }
  public interface IOutput
    {
        void Write(string content);

        void Wait();
    }
  public class ConsoleOutput : IOutput
    {
        /// <summary>
        ///指定的内容
        /// </summary>
        public void Write(string content)
        {
            Console.WriteLine(content);
        }

        public void Wait()
        {
            Console.ReadLine();
        }
    }
 public class DateWriter : IDateWriter
    { 
        private readonly IOutput output;

        /// <summary>
        ///初始化DataWriter类的新实例.
        /// </summary>
        public DateWriter(IOutput output)
        {
            this.output = output;
        }
        public void Write()
        {
            output.Write(DateTime.Now.ToString());
            output.Write("--------------------------------");
            output.Wait();
        }
    }
App.config配置内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
  </startup>

  <autofac defaultAssembly="AutofacConsole">
    <components>
      <component type="AutofacConsole.ConsoleOutput" service="AutofacConsole.Interface.IOutput" />
      <component type="AutofacConsole.DateWriter" service="AutofacConsole.Interface.IDateWriter"/>
    </components>
  </autofac> 
  
</configuration>

运行结果:







Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐