void Write(string content);
public class ConsoleOutput : IOutput
public void Write(string content)
Console.WriteLine(content);
public interface IDateWriter
public class TodayWriter : IDateWriter
public TodayWriter(IOutput output)
this._output.Write(DateTime.Today.ToShortDateString());
public class WriterModule : Autofac.Module
protected override void Load(ContainerBuilder builder)
builder.RegisterType<ConsoleOutput>().As<IOutput>();
builder.RegisterType<TodayWriter>().As<IDateWriter>();
private static IContainer Container{get;set;}
public static void Main()
var builder = new ContainerBuilder();
builder.RegisterModule(new WriterModule());
Container = builder.Build();
private static void WriteDate()
using(var scope = Container.BeginLifetimeScope())
var writer = scope.Resolve<IDateWriter>();