From 0eeb4e1ae59892175aed7084ab60eec3a681c83f Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 17 Dec 2022 14:59:57 +0000 Subject: [PATCH] Use Activator in PluginBase. --- Aaru.CommonTypes.csproj | 22 +++++++++++----------- PluginBase.cs | 30 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Aaru.CommonTypes.csproj b/Aaru.CommonTypes.csproj index 46eaae7c2..d09197898 100644 --- a/Aaru.CommonTypes.csproj +++ b/Aaru.CommonTypes.csproj @@ -33,8 +33,8 @@ CS1591;CS1574 - - + + $(Version)+{chash:8} @@ -42,12 +42,12 @@ true - - - - - - + + + + + + @@ -55,9 +55,9 @@ - - - + + + diff --git a/PluginBase.cs b/PluginBase.cs index 8d5c35961..409e639ff 100644 --- a/PluginBase.cs +++ b/PluginBase.cs @@ -52,6 +52,8 @@ public class PluginBase public readonly SortedDictionary ByteAddressableImages; /// List of checksum plugins public readonly List Checksums; + /// List of all filesystem plugins + public readonly SortedDictionary Filesystems; /// List of filter plugins public readonly SortedDictionary Filters; /// List of floppy image plugins @@ -60,8 +62,6 @@ public class PluginBase public readonly SortedDictionary ImagePluginsList; /// List of all partition plugins public readonly SortedDictionary PartPluginsList; - /// List of all filesystem plugins - public readonly SortedDictionary Filesystems; /// List of read-only filesystem plugins public readonly SortedDictionary ReadOnlyFilesystems; /// List of writable floppy image plugins @@ -90,56 +90,56 @@ public class PluginBase public void AddPlugins(IPluginRegister pluginRegister) { foreach(Type type in pluginRegister.GetAllChecksumPlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IChecksum plugin) + if(Activator.CreateInstance(type) is IChecksum plugin) Checksums.Add(plugin); foreach(Type type in pluginRegister.GetAllFilesystemPlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IFilesystem plugin && + if(Activator.CreateInstance(type) is IFilesystem plugin && !Filesystems.ContainsKey(plugin.Name.ToLower())) - Filesystems.Add(plugin.Name.ToLower(), plugin.GetType()); + Filesystems.Add(plugin.Name.ToLower(), type); foreach(Type type in pluginRegister.GetAllFilterPlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IFilter plugin && + if(Activator.CreateInstance(type) is IFilter plugin && !Filters.ContainsKey(plugin.Name.ToLower())) Filters.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllFloppyImagePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IFloppyImage plugin && + if(Activator.CreateInstance(type) is IFloppyImage plugin && !FloppyImages.ContainsKey(plugin.Name.ToLower())) FloppyImages.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllMediaImagePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IMediaImage plugin && + if(Activator.CreateInstance(type) is IMediaImage plugin && !ImagePluginsList.ContainsKey(plugin.Name.ToLower())) ImagePluginsList.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllPartitionPlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IPartition plugin && + if(Activator.CreateInstance(type) is IPartition plugin && !PartPluginsList.ContainsKey(plugin.Name.ToLower())) PartPluginsList.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllReadOnlyFilesystemPlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IReadOnlyFilesystem plugin && + if(Activator.CreateInstance(type) is IReadOnlyFilesystem plugin && !ReadOnlyFilesystems.ContainsKey(plugin.Name.ToLower())) - ReadOnlyFilesystems.Add(plugin.Name.ToLower(), plugin.GetType()); + ReadOnlyFilesystems.Add(plugin.Name.ToLower(), type); foreach(Type type in pluginRegister.GetAllWritableFloppyImagePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IWritableFloppyImage plugin && + if(Activator.CreateInstance(type) is IWritableFloppyImage plugin && !WritableFloppyImages.ContainsKey(plugin.Name.ToLower())) WritableFloppyImages.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllWritableImagePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IBaseWritableImage plugin && + if(Activator.CreateInstance(type) is IBaseWritableImage plugin && !WritableImages.ContainsKey(plugin.Name.ToLower())) WritableImages.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllArchivePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IArchive plugin && + if(Activator.CreateInstance(type) is IArchive plugin && !Archives.ContainsKey(plugin.Name.ToLower())) Archives.Add(plugin.Name.ToLower(), plugin); foreach(Type type in pluginRegister.GetAllByteAddressablePlugins() ?? Enumerable.Empty()) - if(type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty()) is IByteAddressableImage plugin && + if(Activator.CreateInstance(type) is IByteAddressableImage plugin && !ByteAddressableImages.ContainsKey(plugin.Name.ToLower())) ByteAddressableImages.Add(plugin.Name.ToLower(), plugin); }