IoC容器Autofac使用入门(三)

    xiaoxiao2025-01-20  7

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

    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>

    运行结果:

    转载请注明原文地址: https://ju.6miu.com/read-1295651.html
    最新回复(0)