diff --git a/Interfaces/IPluginRegister.cs b/Interfaces/IPluginRegister.cs
index 05618ffe1..73f24303a 100644
--- a/Interfaces/IPluginRegister.cs
+++ b/Interfaces/IPluginRegister.cs
@@ -71,9 +71,11 @@ public interface IPluginRegister
/// List of media image plugins
List GetAllMediaImagePlugins();
- /// Gets all partition plugins
- /// List of partition plugins
- List GetAllPartitionPlugins();
+ ///
+ /// Registers all partition plugins in the provided service collection
+ ///
+ /// Service collection
+ void RegisterPartitionPlugins(IServiceCollection services);
/// Gets all read-only filesystem plugins
/// List of read-only filesystem plugins
diff --git a/PluginRegister.cs b/PluginRegister.cs
index df83b364d..4b90bd716 100644
--- a/PluginRegister.cs
+++ b/PluginRegister.cs
@@ -54,8 +54,7 @@ public class PluginRegister
public readonly SortedDictionary FloppyImages;
/// List of all media image plugins
public readonly SortedDictionary MediaImages;
- /// List of all partition plugins
- public readonly SortedDictionary Partitions;
+
/// List of read-only filesystem plugins
public readonly SortedDictionary ReadOnlyFilesystems;
/// List of writable floppy image plugins
@@ -69,7 +68,6 @@ public class PluginRegister
{
Filesystems = new SortedDictionary();
ReadOnlyFilesystems = new SortedDictionary();
- Partitions = new SortedDictionary();
MediaImages = new SortedDictionary();
WritableImages = new SortedDictionary();
FloppyImages = new SortedDictionary();
@@ -78,6 +76,19 @@ public class PluginRegister
ByteAddressableImages = new SortedDictionary();
}
+ /// List of all partition plugins
+ public SortedDictionary Partitions
+ {
+ get
+ {
+ SortedDictionary partitions = new();
+ foreach(IPartition plugin in _serviceProvider.GetServices())
+ partitions.Add(plugin.Name.ToLower(), plugin);
+
+ return partitions;
+ }
+ }
+
/// List of filter plugins
public SortedDictionary Filters
{
@@ -165,11 +176,7 @@ public class PluginRegister
MediaImages.Add(plugin.Name.ToLower(), type);
}
- foreach(Type type in pluginRegister.GetAllPartitionPlugins() ?? Enumerable.Empty())
- {
- if(Activator.CreateInstance(type) is IPartition plugin && !Partitions.ContainsKey(plugin.Name.ToLower()))
- Partitions.Add(plugin.Name.ToLower(), type);
- }
+ pluginRegister.RegisterPartitionPlugins(_services);
foreach(Type type in pluginRegister.GetAllReadOnlyFilesystemPlugins() ?? Enumerable.Empty())
{