From d99c71c07cb76b880c2a9e6a37f39e3f9ddb85c7 Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Wed, 16 Feb 2022 17:43:57 +0200 Subject: [PATCH] [store] Refactor service registration mechanism. --- modules/ContentStore/ContentStore.cs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/modules/ContentStore/ContentStore.cs b/modules/ContentStore/ContentStore.cs index df6745e..1c3474f 100644 --- a/modules/ContentStore/ContentStore.cs +++ b/modules/ContentStore/ContentStore.cs @@ -1,20 +1,32 @@ -using Kruzya.TelegramBot.Core; +using System.Reflection; +using Kruzya.TelegramBot.Core; using Microsoft.Extensions.DependencyInjection; using West.TelegramBot.ContentStore.Service; +using Module = Kruzya.TelegramBot.Core.Module; namespace West.TelegramBot.ContentStore; public class ContentStore : Module { + private readonly List _mediaServiceTypes = new(); + public ContentStore(Core core) : base(core) { + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var exportedType in assembly.GetExportedTypes() + .Where(t => !t.IsAbstract && t.IsSubclassOf(typeof(IRandomMediaService)))) + { + _mediaServiceTypes.Add(exportedType); + } + } } public override void ConfigureServices(IServiceCollection services) { - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); + foreach (var serviceType in _mediaServiceTypes) + { + services.AddSingleton(serviceType); + } } } \ No newline at end of file