using System; using Autofac; using Domain; namespace Wiring { public class DomainWiring : IAdapterResolver, IDisposable { private readonly IContainer _container; public DomainWiring() { _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() => _container.Resolve(); public void Dispose() => _container?.Dispose(); } }