Files
kickstart-cs/files/Wiring.cs
2021-03-26 00:26:52 +01:00

60 lines
1.6 KiB
C#

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<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>()
{
return _container.Resolve<T>();
}
public void Dispose()
{
if (_container != null) {
_container.Dispose();
}
}
}
}