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