[store] Refactor service registration mechanism.

This commit is contained in:
West14
2022-02-16 17:43:57 +02:00
parent 16ca4a09a2
commit d99c71c07c
+17 -5
View File
@@ -1,20 +1,32 @@
using Kruzya.TelegramBot.Core; using System.Reflection;
using Kruzya.TelegramBot.Core;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using West.TelegramBot.ContentStore.Service; using West.TelegramBot.ContentStore.Service;
using Module = Kruzya.TelegramBot.Core.Module;
namespace West.TelegramBot.ContentStore; namespace West.TelegramBot.ContentStore;
public class ContentStore : Module public class ContentStore : Module
{ {
private readonly List<Type> _mediaServiceTypes = new();
public ContentStore(Core core) : base(core) 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) public override void ConfigureServices(IServiceCollection services)
{ {
services.AddSingleton<OBoobsService>(); foreach (var serviceType in _mediaServiceTypes)
services.AddSingleton<CatApiService>(); {
services.AddSingleton<DogApiService>(); services.AddSingleton(serviceType);
services.AddSingleton<AnimBoobsService>(); }
} }
} }