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)); }