diff --git a/Aaru.Core/Partitions.cs b/Aaru.Core/Partitions.cs index 7246ccfad..0a7bb5897 100644 --- a/Aaru.Core/Partitions.cs +++ b/Aaru.Core/Partitions.cs @@ -30,7 +30,6 @@ // Copyright © 2011-2023 Natalia Portillo // ****************************************************************************/ -using System; using System.Collections.Generic; using System.Linq; using Aaru.CommonTypes; @@ -63,17 +62,17 @@ public static class Partitions { foreach(TapeFile tapeFile in tapeImage.Files) { - foreach(Type pluginType in plugins.Partitions.Values) + foreach(IPartition plugin in plugins.Partitions.Values) { - if(Activator.CreateInstance(pluginType) is not IPartition part) + if(plugin is null) continue; - if(!part.GetInformation(image, out List partitions, tapeFile.FirstBlock)) + if(!plugin.GetInformation(image, out List partitions, tapeFile.FirstBlock)) continue; foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, part.Name, + AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, plugin.Name, tapeFile.FirstBlock); } @@ -86,17 +85,17 @@ public static class Partitions { foreach(Partition imagePartition in partitionableImage.Partitions) { - foreach(Type pluginType in plugins.Partitions.Values) + foreach(IPartition plugin in plugins.Partitions.Values) { - if(Activator.CreateInstance(pluginType) is not IPartition part) + if(plugin is null) continue; - if(!part.GetInformation(image, out List partitions, imagePartition.Start)) + if(!plugin.GetInformation(image, out List partitions, imagePartition.Start)) continue; foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, part.Name, + AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, plugin.Name, imagePartition.Start); } @@ -107,16 +106,16 @@ public static class Partitions // Getting all partitions at start of device if(!checkedLocations.Contains(0)) { - foreach(Type pluginType in plugins.Partitions.Values) + foreach(IPartition plugin in plugins.Partitions.Values) { - if(Activator.CreateInstance(pluginType) is not IPartition part) + if(plugin is null) continue; - if(!part.GetInformation(image, out List partitions, 0)) + if(!plugin.GetInformation(image, out List partitions, 0)) continue; foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_zero, part.Name); + AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_zero, plugin.Name); } checkedLocations.Add(0); @@ -134,18 +133,18 @@ public static class Partitions List children = new(); - foreach(Type pluginType in plugins.Partitions.Values) + foreach(IPartition plugin in plugins.Partitions.Values) { - if(Activator.CreateInstance(pluginType) is not IPartition part) + if(plugin is null) continue; - AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Trying_0_at_1, part.Name, + AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Trying_0_at_1, plugin.Name, foundPartitions[0].Start); - if(!part.GetInformation(image, out List partitions, foundPartitions[0].Start)) + if(!plugin.GetInformation(image, out List partitions, foundPartitions[0].Start)) continue; - AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, part.Name, + AaruConsole.DebugWriteLine(MODULE_NAME, Localization.Core.Found_0_at_1, plugin.Name, foundPartitions[0].Start); children.AddRange(partitions); diff --git a/Aaru.Generators/PluginRegisterGenerator.cs b/Aaru.Generators/PluginRegisterGenerator.cs index f92173fa5..15e949ae0 100644 --- a/Aaru.Generators/PluginRegisterGenerator.cs +++ b/Aaru.Generators/PluginRegisterGenerator.cs @@ -195,16 +195,14 @@ public class PluginRegisterGenerator : ISourceGenerator if(partitionPlugins?.Count > 0) { - sb.AppendLine(" public List GetAllPartitionPlugins() => new()"); + sb.AppendLine(" public void RegisterPartitionPlugins(IServiceCollection services)"); sb.AppendLine(" {"); - foreach(string plugin in partitionPlugins) - sb.AppendLine($" typeof({plugin}),"); - - sb.AppendLine(" };"); + sb.AppendLine($" services.AddTransient();"); + sb.AppendLine(" }"); } else - sb.AppendLine(" public List GetAllPartitionPlugins() => null;"); + sb.AppendLine(" public void RegisterPartitionPlugins(IServiceCollection services) {}"); sb.AppendLine(); diff --git a/Aaru/Commands/Formats.cs b/Aaru/Commands/Formats.cs index 68e421ab7..776e262c2 100644 --- a/Aaru/Commands/Formats.cs +++ b/Aaru/Commands/Formats.cs @@ -231,15 +231,15 @@ sealed class FormatsCommand : Command table.AddColumn(UI.Title_Scheme); - foreach(KeyValuePair kvp in plugins.Partitions) + foreach(IPartition plugin in plugins.Partitions.Values) { - if(Activator.CreateInstance(kvp.Value) is not IPartition part) + if(plugin is null) continue; if(verbose) - table.AddRow(part.Id.ToString(), Markup.Escape(part.Name)); + table.AddRow(plugin.Id.ToString(), Markup.Escape(plugin.Name)); else - table.AddRow(Markup.Escape(part.Name)); + table.AddRow(Markup.Escape(plugin.Name)); } AnsiConsole.Write(table);