using Autofac;
using System;
namespace AutofacLab
{
public interface ISensor
{
string Detect();
}
public class TemperatureeSensor : ISensor
{
public string Detect()
{
return "It's hot";
}
}
public class SoundSensor: ISensor
{
public string Detect()
{
return "It's noisy";
}
}
public enum SensorType
{
Temperature,
Sound
}
class Program
{
static void _Main(string[] args)
{
ContainerBuilder builder = new ContainerBuilder();
//http://docs.autofac.org/en/latest/advanced/keyed-services.html
builder.RegisterType<SoundSensor>().Keyed<ISensor>(SensorType.Sound);
builder.Register((c) =>
{
return new TemperatureeSensor();
}).Keyed<ISensor>(SensorType.Temperature);
IContainer container = builder.Build();
var ss = container.ResolveKeyed<ISensor>(SensorType.Sound);
Console.WriteLine(ss.Detect());
var ts = container.ResolveKeyed<ISensor>(SensorType.Temperature);
Console.WriteLine(ts.Detect());
Console.Read();
}
}
}