diff --git a/Interfaces/IPluginRegister.cs b/Interfaces/IPluginRegister.cs index e68fa0d20..aa9a1c769 100644 --- a/Interfaces/IPluginRegister.cs +++ b/Interfaces/IPluginRegister.cs @@ -69,9 +69,11 @@ public interface IPluginRegister /// List of floppy image plugins List GetAllFloppyImagePlugins(); - /// Gets all media image plugins - /// List of media image plugins - List GetAllMediaImagePlugins(); + /// + /// Registers all media image plugins in the provided service collection + /// + /// Service collection + void RegisterMediaImagePlugins(IServiceCollection services); /// /// Registers all partition plugins in the provided service collection diff --git a/PluginRegister.cs b/PluginRegister.cs index ca47f9068..96e172bef 100644 --- a/PluginRegister.cs +++ b/PluginRegister.cs @@ -49,8 +49,6 @@ public class PluginRegister /// List of floppy image plugins public readonly SortedDictionary FloppyImages; - /// List of all media image plugins - public readonly SortedDictionary MediaImages; /// List of writable floppy image plugins public readonly SortedDictionary WritableFloppyImages; /// List of writable media image plugins @@ -60,13 +58,25 @@ public class PluginRegister PluginRegister() { - MediaImages = new SortedDictionary(); WritableImages = new SortedDictionary(); FloppyImages = new SortedDictionary(); WritableFloppyImages = new SortedDictionary(); ByteAddressableImages = new SortedDictionary(); } + /// List of all media image plugins + public SortedDictionary MediaImages + { + get + { + SortedDictionary mediaImages = new(); + foreach(IMediaImage plugin in _serviceProvider.GetServices()) + mediaImages[plugin.Name.ToLower()] = plugin; + + return mediaImages; + } + } + /// List of read-only filesystem plugins public SortedDictionary ReadOnlyFilesystems { @@ -195,12 +205,7 @@ public class PluginRegister FloppyImages.Add(plugin.Name.ToLower(), type); } - foreach(Type type in pluginRegister.GetAllMediaImagePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IMediaImage plugin && !MediaImages.ContainsKey(plugin.Name.ToLower())) - MediaImages.Add(plugin.Name.ToLower(), type); - } - + pluginRegister.RegisterMediaImagePlugins(_services); pluginRegister.RegisterPartitionPlugins(_services); foreach(Type type in pluginRegister.GetAllWritableFloppyImagePlugins() ?? Enumerable.Empty())