Initial
This commit is contained in:
4
files/AssemblyInfo.cs
Normal file
4
files/AssemblyInfo.cs
Normal file
@@ -0,0 +1,4 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly:InternalsVisibleTo("Domain.Tests")]
|
||||
[assembly:InternalsVisibleTo("Wiring")]
|
||||
24
files/DomainPorts.cs
Normal file
24
files/DomainPorts.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
|
||||
namespace Domain
|
||||
{
|
||||
public static class DomainPorts
|
||||
{
|
||||
private static IAdapterResolver _resolver;
|
||||
|
||||
internal static T Resolve<T>()
|
||||
{
|
||||
if (_resolver == null) throw new NullReferenceException("Adapter resolver is not set!");
|
||||
return _resolver.Resolve<T>();
|
||||
}
|
||||
|
||||
public static void SetResolver(IAdapterResolver resolver)
|
||||
{
|
||||
_resolver = resolver;
|
||||
}
|
||||
|
||||
// public static ILogService LogService => Resolve<ILogService>();
|
||||
// public static IConfigService ConfigService => Resolve<IConfigService>();
|
||||
// public static ICacheService CacheService => Resolve<ICacheService>();
|
||||
}
|
||||
}
|
||||
7
files/IAdapterResolver.cs
Normal file
7
files/IAdapterResolver.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Domain
|
||||
{
|
||||
public interface IAdapterResolver
|
||||
{
|
||||
T Resolve<T>();
|
||||
}
|
||||
}
|
||||
59
files/Wiring.cs
Normal file
59
files/Wiring.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user