using System; using Autofac; using Domain; namespace Wiring { public class Wiring : IAdapterResolver, IDisposable { private readonly IContainer _container; public Wiring() { _container = Wire(); DomainPorts.SetResolver(this); } static IContainer Wire() { var builder = new ContainerBuilder(); //builder.RegisterAssemblyTypes(typeof(ConsoleOutput).Assembly) // .Where(t => typeof(IStartable).IsAssignableFrom(t)) // .As() // .SingleInstance(); //builder.Register(c => new ConsoleOutput()).As().SingleInstance(); RegisterSecondaryPorts(builder); RegisterPrimaryPorts(builder); return builder.Build(); } private static void RegisterSecondaryPorts(ContainerBuilder builder) { // builder.RegisterType().As().SingleInstance(); // builder.RegisterType().As().SingleInstance(); // builder.RegisterType().As().SingleInstance(); // builder.RegisterType().As().SingleInstance(); } private static void RegisterPrimaryPorts(ContainerBuilder builder) { // builder.RegisterType().As().SingleInstance(); // builder.RegisterType().As().SingleInstance(); // builder.RegisterType().As().SingleInstance(); } public T Resolve() { return _container.Resolve(); } public void Dispose() { if (_container != null) { _container.Dispose(); } } } }