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())