Commit 37261dcf authored by James Yeung's avatar James Yeung Committed by Steve Smith

move interfaces from core to shared kernel project (#92)

parent 23adf414
using CleanArchitecture.Core.Entities; using CleanArchitecture.Core.Entities;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using System.Linq; using System.Linq;
namespace CleanArchitecture.Core namespace CleanArchitecture.Core
......
using System.Threading.Tasks; using System.Threading.Tasks;
using Ardalis.GuardClauses; using Ardalis.GuardClauses;
using CleanArchitecture.Core.Events; using CleanArchitecture.Core.Events;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
namespace CleanArchitecture.Core.Services namespace CleanArchitecture.Core.Services
{ {
......
using Autofac; using Autofac;
using Autofac.Extensions.DependencyInjection; using Autofac.Extensions.DependencyInjection;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.Core;
using CleanArchitecture.Infrastructure.Data; using CleanArchitecture.SharedKernel.Interfaces;
using Microsoft.Extensions.DependencyInjection; using CleanArchitecture.Infrastructure.Data;
using System; using Microsoft.Extensions.DependencyInjection;
using System;
using System.Reflection; using System.Reflection;
namespace CleanArchitecture.Infrastructure namespace CleanArchitecture.Infrastructure
{ {
public static class ContainerSetup public static class ContainerSetup
{ {
public static IServiceProvider InitializeWeb(Assembly webAssembly, IServiceCollection services) => public static IServiceProvider InitializeWeb(Assembly webAssembly, IServiceCollection services) =>
new AutofacServiceProvider(BaseAutofacInitialization(setupAction => new AutofacServiceProvider(BaseAutofacInitialization(setupAction =>
{ {
setupAction.Populate(services); setupAction.Populate(services);
setupAction.RegisterAssemblyTypes(webAssembly).AsImplementedInterfaces(); setupAction.RegisterAssemblyTypes(webAssembly).AsImplementedInterfaces();
})); }));
public static IContainer BaseAutofacInitialization(Action<ContainerBuilder> setupAction = null) public static IContainer BaseAutofacInitialization(Action<ContainerBuilder> setupAction = null)
{ {
var builder = new ContainerBuilder(); var builder = new ContainerBuilder();
var coreAssembly = Assembly.GetAssembly(typeof(IRepository)); var coreAssembly = Assembly.GetAssembly(typeof(DatabasePopulator));
var infrastructureAssembly = Assembly.GetAssembly(typeof(EfRepository)); var infrastructureAssembly = Assembly.GetAssembly(typeof(EfRepository));
builder.RegisterAssemblyTypes(coreAssembly, infrastructureAssembly).AsImplementedInterfaces(); var sharedKernelAssembly = Assembly.GetAssembly(typeof(IRepository));
builder.RegisterAssemblyTypes(sharedKernelAssembly, coreAssembly, infrastructureAssembly).AsImplementedInterfaces();
setupAction?.Invoke(builder);
return builder.Build(); setupAction?.Invoke(builder);
} return builder.Build();
} }
}
} }
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
......
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Collections.Generic; using System.Collections.Generic;
......
using Autofac; using Autofac;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
using System; using System;
using System.Collections; using System.Collections;
......
using System.Threading.Tasks; using System.Threading.Tasks;
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
namespace CleanArchitecture.Core.Interfaces namespace CleanArchitecture.SharedKernel.Interfaces
{ {
public interface IDomainEventDispatcher public interface IDomainEventDispatcher
{ {
......
using System.Threading.Tasks; using System.Threading.Tasks;
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
namespace CleanArchitecture.Core.Interfaces namespace CleanArchitecture.SharedKernel.Interfaces
{ {
public interface IHandle<in T> where T : BaseDomainEvent public interface IHandle<in T> where T : BaseDomainEvent
{ {
......
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
using System.Collections.Generic; using System.Collections.Generic;
namespace CleanArchitecture.Core.Interfaces namespace CleanArchitecture.SharedKernel.Interfaces
{ {
public interface IRepository public interface IRepository
{ {
...@@ -11,4 +11,4 @@ namespace CleanArchitecture.Core.Interfaces ...@@ -11,4 +11,4 @@ namespace CleanArchitecture.Core.Interfaces
void Update<T>(T entity) where T : BaseEntity; void Update<T>(T entity) where T : BaseEntity;
void Delete<T>(T entity) where T : BaseEntity; void Delete<T>(T entity) where T : BaseEntity;
} }
} }
\ No newline at end of file
using CleanArchitecture.Core.Entities; using CleanArchitecture.Core.Entities;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Web.ApiModels; using CleanArchitecture.Web.ApiModels;
using CleanArchitecture.Web.Filters; using CleanArchitecture.Web.Filters;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
......
using CleanArchitecture.Core; using CleanArchitecture.Core;
using CleanArchitecture.Core.Entities; using CleanArchitecture.Core.Entities;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Web.ApiModels; using CleanArchitecture.Web.ApiModels;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Linq; using System.Linq;
......
using CleanArchitecture.Core.Entities; using CleanArchitecture.Core.Entities;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Collections.Generic; using System.Collections.Generic;
......
using CleanArchitecture.Core; using CleanArchitecture.Core;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
namespace CleanArchitecture.Web.Pages.ToDoRazorPage namespace CleanArchitecture.Web.Pages.ToDoRazorPage
......
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Infrastructure.Data; using CleanArchitecture.Infrastructure.Data;
using CleanArchitecture.UnitTests; using CleanArchitecture.UnitTests;
using CleanArchitecture.Web; using CleanArchitecture.Web;
......
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Infrastructure.Data; using CleanArchitecture.Infrastructure.Data;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
......
using System.Threading.Tasks; using System.Threading.Tasks;
using CleanArchitecture.Core.Interfaces; using CleanArchitecture.SharedKernel.Interfaces;
using CleanArchitecture.Core.SharedKernel; using CleanArchitecture.Core.SharedKernel;
namespace CleanArchitecture.UnitTests namespace CleanArchitecture.UnitTests
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment