diff --git a/Aaru.Core/ImageFormat.cs b/Aaru.Core/ImageFormat.cs index f5524c6fb..f0bbd1199 100644 --- a/Aaru.Core/ImageFormat.cs +++ b/Aaru.Core/ImageFormat.cs @@ -54,9 +54,9 @@ public static class ImageFormat IBaseImage imageFormat = null; // Check all but RAW plugin - foreach(Type pluginType in plugins.MediaImages.Values) + foreach(IMediaImage imagePlugin in plugins.MediaImages.Values) { - if(Activator.CreateInstance(pluginType) is not IMediaImage imagePlugin) + if(imagePlugin is null) continue; if(imagePlugin.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) @@ -114,9 +114,9 @@ public static class ImageFormat return imageFormat; // Check only RAW plugin - foreach(Type pluginType in plugins.MediaImages.Values) + foreach(IMediaImage imagePlugin in plugins.MediaImages.Values) { - if(Activator.CreateInstance(pluginType) is not IMediaImage imagePlugin) + if(imagePlugin is null) continue; if(imagePlugin.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) diff --git a/Aaru.Decryption b/Aaru.Decryption index 7fd2a0fc7..605e00ed8 160000 --- a/Aaru.Decryption +++ b/Aaru.Decryption @@ -1 +1 @@ -Subproject commit 7fd2a0fc739ac72bae3f6cf75d210dbfb51b8236 +Subproject commit 605e00ed85de6a875ff930b039565460ba43c7df diff --git a/Aaru.Generators/PluginRegisterGenerator.cs b/Aaru.Generators/PluginRegisterGenerator.cs index 017001692..1dc25040b 100644 --- a/Aaru.Generators/PluginRegisterGenerator.cs +++ b/Aaru.Generators/PluginRegisterGenerator.cs @@ -176,16 +176,16 @@ public class PluginRegisterGenerator : ISourceGenerator if(mediaImagePlugins?.Count > 0) { - sb.AppendLine(" public List GetAllMediaImagePlugins() => new()"); + sb.AppendLine(" public void RegisterMediaImagePlugins(IServiceCollection services)"); sb.AppendLine(" {"); foreach(string plugin in mediaImagePlugins) - sb.AppendLine($" typeof({plugin}),"); + sb.AppendLine($" services.AddTransient();"); - sb.AppendLine(" };"); + sb.AppendLine(" }"); } else - sb.AppendLine(" public List GetAllMediaImagePlugins() => null;"); + sb.AppendLine(" public void RegisterMediaImagePlugins(IServiceCollection services) {}"); sb.AppendLine(); @@ -394,7 +394,7 @@ public class PluginRegisterGenerator : ISourceGenerator ByteAddressableImagePlugins.Add(plugin.Identifier.Text); } - MediaImagePlugins.AddRange(WritableImagePlugins); + MediaImagePlugins.AddRange(WritableImagePlugins.Where(t => !ByteAddressableImagePlugins.Contains(t))); FileSystems.AddRange(ReadOnlyFileSystems); } diff --git a/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs b/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs index 512750b01..34c5ca353 100644 --- a/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs +++ b/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs @@ -62,16 +62,16 @@ public sealed class PluginsViewModel : ViewModelBase CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand); // TODO: Takes too much time - foreach(Type filterType in PluginRegister.Singleton.Filters.Values) + foreach(IFilter filter in PluginRegister.Singleton.Filters.Values) { - if(Activator.CreateInstance(filterType) is not IFilter filter) + if(filter is null) continue; Filters.Add(new PluginModel { Name = filter.Name, Uuid = filter.Id, - Version = Assembly.GetAssembly(filterType)?.GetName().Version?.ToString(), + Version = Assembly.GetAssembly(filter.GetType())?.GetName().Version?.ToString(), Author = filter.Author }); } @@ -90,30 +90,30 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in PluginRegister.Singleton.MediaImages.Values) + foreach(IMediaImage mediaImage in PluginRegister.Singleton.MediaImages.Values) { - if(Activator.CreateInstance(imageType) is not IMediaImage mediaImage) + if(mediaImage is null) continue; Images.Add(new PluginModel { Name = mediaImage.Name, Uuid = mediaImage.Id, - Version = Assembly.GetAssembly(imageType)?.GetName().Version?.ToString(), + Version = Assembly.GetAssembly(mediaImage.GetType())?.GetName().Version?.ToString(), Author = mediaImage.Author }); } - foreach(Type partitionType in PluginRegister.Singleton.Partitions.Values) + foreach(IPartition partition in PluginRegister.Singleton.Partitions.Values) { - if(Activator.CreateInstance(partitionType) is not IPartition partition) + if(partition is null) continue; PartitionSchemes.Add(new PluginModel { Name = partition.Name, Uuid = partition.Id, - Version = Assembly.GetAssembly(partitionType)?.GetName().Version?.ToString(), + Version = Assembly.GetAssembly(partition.GetType())?.GetName().Version?.ToString(), Author = partition.Author }); } diff --git a/Aaru/Commands/Formats.cs b/Aaru/Commands/Formats.cs index 20fe8cef1..b41ad9ef4 100644 --- a/Aaru/Commands/Formats.cs +++ b/Aaru/Commands/Formats.cs @@ -115,7 +115,8 @@ sealed class FormatsCommand : Command table = new Table { Title = new TableTitle(string.Format(UI.Read_only_media_image_formats_0, - plugins.MediaImages.Count(t => !t.Value.GetInterfaces(). + plugins.MediaImages.Count(t => !t.Value.GetType(). + GetInterfaces(). Contains(typeof(IWritableImage))))) }; @@ -124,12 +125,12 @@ sealed class FormatsCommand : Command table.AddColumn(UI.Title_Media_image_format); - foreach(KeyValuePair kvp in plugins.MediaImages.Where(t => !t.Value.GetInterfaces(). - Contains(typeof(IWritableImage)))) + foreach(IMediaImage imagePlugin in plugins.MediaImages.Values. + Where(t => !t.GetType(). + GetInterfaces(). + Contains(typeof(IWritableImage))). + Where(t => t is not null)) { - if(Activator.CreateInstance(kvp.Value) is not IMediaImage imagePlugin) - continue; - if(verbose) table.AddRow(imagePlugin.Id.ToString(), Markup.Escape(imagePlugin.Name)); else