Skip to content

Commit 23f6cc7

Browse files
KaranChadha10KaranChadha10
authored andcommitted
refactor(service-config): Restructure service registration logic
1 parent fb55a6c commit 23f6cc7

File tree

2 files changed

+34
-18
lines changed

2 files changed

+34
-18
lines changed

src/SimplCommerce.WebHost/Extensions/ServiceCollectionExtensions.cs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
4+
using System.IdentityModel.Tokens.Jwt;
45
using System.IO;
56
using System.Linq;
67
using System.Net;
@@ -11,21 +12,25 @@
1112
using Microsoft.AspNetCore.Authentication.Cookies;
1213
using Microsoft.AspNetCore.Authentication.JwtBearer;
1314
using Microsoft.AspNetCore.Authentication.OAuth;
14-
using Microsoft.AspNetCore.Identity;
1515
using Microsoft.AspNetCore.Http;
16+
using Microsoft.AspNetCore.Identity;
1617
using Microsoft.AspNetCore.Mvc.ApplicationParts;
17-
using Microsoft.Extensions.Localization;
18+
using Microsoft.AspNetCore.Razor.TagHelpers;
1819
using Microsoft.EntityFrameworkCore;
1920
using Microsoft.Extensions.Configuration;
2021
using Microsoft.Extensions.DependencyInjection;
22+
using Microsoft.Extensions.Localization;
23+
using Microsoft.OpenApi.Models;
2124
using SimplCommerce.Infrastructure;
25+
using SimplCommerce.Infrastructure.Data;
2226
using SimplCommerce.Infrastructure.Modules;
27+
using SimplCommerce.Infrastructure.Web;
2328
using SimplCommerce.Infrastructure.Web.ModelBinders;
2429
using SimplCommerce.Module.Core.Data;
2530
using SimplCommerce.Module.Core.Extensions;
2631
using SimplCommerce.Module.Core.Models;
32+
using SimplCommerce.Module.Localization.TagHelpers;
2733
using SimplCommerce.WebHost.IdentityServer;
28-
using System.IdentityModel.Tokens.Jwt;
2934

3035
namespace SimplCommerce.WebHost.Extensions
3136
{
@@ -226,6 +231,29 @@ public static IServiceCollection AddCustomizedDataStore(this IServiceCollection
226231
return services;
227232
}
228233

234+
/// <summary>
235+
/// Discovers and configures all modules in the application by finding and initializing their module initializers.
236+
/// </summary>
237+
/// <param name="services">The <see cref="IServiceCollection"/> to add module services to.</param>
238+
/// <returns>The same service collection so that multiple calls can be chained.</returns>
239+
public static IServiceCollection ConfigureModules(this IServiceCollection services)
240+
{
241+
foreach (var module in GlobalConfiguration.Modules)
242+
{
243+
var moduleInitializerType = module.Assembly.GetTypes()
244+
.FirstOrDefault(t => typeof(IModuleInitializer).IsAssignableFrom(t));
245+
246+
if (moduleInitializerType != null && moduleInitializerType != typeof(IModuleInitializer))
247+
{
248+
var moduleInitializer = (IModuleInitializer)Activator.CreateInstance(moduleInitializerType);
249+
services.AddSingleton(typeof(IModuleInitializer), moduleInitializer);
250+
moduleInitializer.ConfigureServices(services);
251+
}
252+
}
253+
254+
return services;
255+
}
256+
229257
private static void TryLoadModuleAssembly(string moduleFolderPath, ModuleInfo module)
230258
{
231259
const string binariesFolderName = "bin";
@@ -268,7 +296,6 @@ private static void TryLoadModuleAssembly(string moduleFolderPath, ModuleInfo mo
268296
}
269297
}
270298
}
271-
272299
private static Task HandleRemoteLoginFailure(RemoteFailureContext ctx)
273300
{
274301
ctx.Response.Redirect("/login");

src/SimplCommerce.WebHost/Program.cs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Linq;
32
using System.Text.Encodings.Web;
43
using System.Text.Unicode;
54
using Microsoft.AspNetCore.Builder;
@@ -21,6 +20,7 @@
2120
using SimplCommerce.Module.Localization.Extensions;
2221
using SimplCommerce.Module.Localization.TagHelpers;
2322
using SimplCommerce.WebHost.Extensions;
23+
using Stripe;
2424

2525
var builder = WebApplication.CreateBuilder(args);
2626
ConfigureService();
@@ -48,7 +48,7 @@ void ConfigureService()
4848
builder.Services.AddScoped<SlugRouteValueTransformer>();
4949

5050
builder.Services.AddCustomizedLocalization();
51-
51+
5252
builder.Services.AddCustomizedMvc(GlobalConfiguration.Modules);
5353
builder.Services.Configure<RazorViewEngineOptions>(
5454
options => { options.ViewLocationExpanders.Add(new ThemeableViewLocationExpander()); });
@@ -60,18 +60,7 @@ void ConfigureService()
6060
builder.Services.AddTransient<IRazorViewRenderer, RazorViewRenderer>();
6161
builder.Services.AddAntiforgery(options => options.HeaderName = "X-XSRF-Token");
6262
builder.Services.AddCloudscribePagination();
63-
64-
foreach (var module in GlobalConfiguration.Modules)
65-
{
66-
var moduleInitializerType = module.Assembly.GetTypes()
67-
.FirstOrDefault(t => typeof(IModuleInitializer).IsAssignableFrom(t));
68-
if ((moduleInitializerType != null) && (moduleInitializerType != typeof(IModuleInitializer)))
69-
{
70-
var moduleInitializer = (IModuleInitializer)Activator.CreateInstance(moduleInitializerType);
71-
builder.Services.AddSingleton(typeof(IModuleInitializer), moduleInitializer);
72-
moduleInitializer.ConfigureServices(builder.Services);
73-
}
74-
}
63+
builder.Services.ConfigureModules();
7564

7665
builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly));
7766

0 commit comments

Comments
 (0)