IoC容器Autofac使用入门(三)

来源:互联网 发布:php ajax 跨域 编辑:程序博客网 时间:2024/05/21 06:02

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

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>

运行结果:







0 0
原创粉丝点击