60 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|