Ajout de la méthode d'extension AddHNServices
This commit is contained in:
parent
4960449ed2
commit
c82e8d7f26
@ -12,7 +12,8 @@ namespace CLI
|
||||
new Domain.Link("http://default.website"),
|
||||
new Domain.Link("http://another.website")
|
||||
);
|
||||
var data = new Data(linkRepository);
|
||||
var commentRepository = new CommentRepository();
|
||||
var data = new Data(linkRepository, commentRepository);
|
||||
var service = new LinkService(linkRepository, data);
|
||||
|
||||
service.PublishLink(new PublishLinkCommand
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using Application;
|
||||
using Domain;
|
||||
using Infrastructure;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
@ -20,28 +21,8 @@ namespace Website
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
var link1 = new Domain.Link("http://default.website");
|
||||
var link2 = new Domain.Link("http://another.website");
|
||||
var link3 = new Domain.Link("http://a.final.website");
|
||||
|
||||
services.AddSingleton<ILinkRepository>(new Infrastructure.Repositories.Memory.LinkRepository(
|
||||
link1,
|
||||
link2,
|
||||
link3
|
||||
));
|
||||
services.AddSingleton<ICommentRepository>(new Infrastructure.Repositories.Memory.CommentRepository(
|
||||
link1.AddComment("my first comment"),
|
||||
link3.AddComment("another comment")
|
||||
));
|
||||
services.AddSingleton<IData>(serviceProvider =>
|
||||
{
|
||||
var memoryLinkRepository = serviceProvider.GetRequiredService<ILinkRepository>() as Infrastructure.Repositories.Memory.LinkRepository;
|
||||
var memoryCommentRepository = serviceProvider.GetRequiredService<ICommentRepository>() as Infrastructure.Repositories.Memory.CommentRepository;
|
||||
return new Infrastructure.Repositories.Memory.Data(memoryLinkRepository, memoryCommentRepository);
|
||||
});
|
||||
services.AddTransient<LinkService>();
|
||||
services.AddTransient<CommentService>();
|
||||
|
||||
// ServiceCollectionExtensions.AddHNServices(services); // strictement équivalent à la ligne du dessous
|
||||
services.AddHNServices();
|
||||
services.AddControllersWithViews(options =>
|
||||
{
|
||||
options.Filters.Add<CustomExceptionFilter>();
|
||||
|
||||
@ -4,6 +4,10 @@
|
||||
<ProjectReference Include="..\Application\Application.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
36
Infrastructure/ServiceCollectionExtensions.cs
Normal file
36
Infrastructure/ServiceCollectionExtensions.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using Application;
|
||||
using Domain;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace Infrastructure
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddHNServices(this IServiceCollection services)
|
||||
{
|
||||
var link1 = new Domain.Link("http://default.website");
|
||||
var link2 = new Domain.Link("http://another.website");
|
||||
var link3 = new Domain.Link("http://a.final.website");
|
||||
|
||||
services.AddSingleton<ILinkRepository>(new Infrastructure.Repositories.Memory.LinkRepository(
|
||||
link1,
|
||||
link2,
|
||||
link3
|
||||
));
|
||||
services.AddSingleton<ICommentRepository>(new Infrastructure.Repositories.Memory.CommentRepository(
|
||||
link1.AddComment("my first comment"),
|
||||
link3.AddComment("another comment")
|
||||
));
|
||||
services.AddSingleton<IData>(serviceProvider =>
|
||||
{
|
||||
var memoryLinkRepository = serviceProvider.GetRequiredService<ILinkRepository>() as Infrastructure.Repositories.Memory.LinkRepository;
|
||||
var memoryCommentRepository = serviceProvider.GetRequiredService<ICommentRepository>() as Infrastructure.Repositories.Memory.CommentRepository;
|
||||
return new Infrastructure.Repositories.Memory.Data(memoryLinkRepository, memoryCommentRepository);
|
||||
});
|
||||
services.AddTransient<LinkService>();
|
||||
services.AddTransient<CommentService>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user