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) { foreach (var serviceType in _mediaServiceTypes) { services.AddSingleton(serviceType); } } }