通过配置文件实现对象的创建
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>
运行结果: