namespace IBKRTrader.Core.Modules;
///
/// Zentrale Registry aller geladenen Module.
/// Wird in Program.cs mit den Modul-Instanzen befüllt und als Singleton
/// bereitgestellt, damit Launcher und Startup-Code über die Module iterieren
/// können, ohne konkrete Modultypen zu kennen.
///
public class ModuleRegistry
{
private readonly List _modules;
public ModuleRegistry(IEnumerable modules)
=> _modules = modules?.ToList() ?? throw new ArgumentNullException(nameof(modules));
/// Alle registrierten Module in Registrierungsreihenfolge.
public IReadOnlyList Modules => _modules;
/// Findet ein Modul anhand seines Kürzels (case-insensitive) oder null.
public IModule? Find(string key)
=> _modules.FirstOrDefault(m => string.Equals(m.Key, key, StringComparison.OrdinalIgnoreCase));
}