Files
kickstart-cs/files/DomainWiring.cs

53 lines
1.5 KiB
C#

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<IStartable>()
// .SingleInstance();
//builder.Register(c => new ConsoleOutput()).As<IOutput>().SingleInstance();
RegisterSecondaryPorts(builder);
RegisterPrimaryPorts(builder);
return builder.Build();
}
private static void RegisterSecondaryPorts(ContainerBuilder builder)
{
// builder.RegisterType<LogRepository>().As<ILogRepository>().SingleInstance();
// builder.RegisterType<ConfigRepository>().As<IConfigRepository>().SingleInstance();
// builder.RegisterType<CacheRepository>().As<ICacheRepository>().SingleInstance();
// builder.RegisterType<UnitOfWorkFactory>().As<IUnitOfWorkFactory>().SingleInstance();
}
private static void RegisterPrimaryPorts(ContainerBuilder builder)
{
// builder.RegisterType<LogService>().As<ILogService>().SingleInstance();
// builder.RegisterType<ConfigService>().As<IConfigService>().SingleInstance();
// builder.RegisterType<CacheService>().As<ICacheService>().SingleInstance();
}
public T Resolve<T>() => _container.Resolve<T>();
public void Dispose() => _container?.Dispose();
}
}