diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 981f9954..03721f99 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -738,20 +738,20 @@ namespace SabreTools.Metadata.DatFiles string? sampleOf = machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey); // Update machine name - if (machineName is not null && mapping.ContainsKey(machineName)) - machine.SetName(mapping[machineName]); + if (machineName is not null && mapping.TryGetValue(machineName, out string? mappedMachineName)) + machine.SetName(mappedMachineName); // Update cloneof - if (cloneOf is not null && mapping.ContainsKey(cloneOf)) - machine.Write(Data.Models.Metadata.Machine.CloneOfKey, mapping[cloneOf]); + if (cloneOf is not null && mapping.TryGetValue(cloneOf, out string? mappedCloneOf)) + machine.Write(Data.Models.Metadata.Machine.CloneOfKey, mappedCloneOf); // Update romof - if (romOf is not null && mapping.ContainsKey(romOf)) - machine.Write(Data.Models.Metadata.Machine.RomOfKey, mapping[romOf]); + if (romOf is not null && mapping.TryGetValue(romOf, out string? mappedRomOf)) + machine.Write(Data.Models.Metadata.Machine.RomOfKey, mappedRomOf); // Update sampleof - if (sampleOf is not null && mapping.ContainsKey(sampleOf)) - machine.Write(Data.Models.Metadata.Machine.SampleOfKey, mapping[sampleOf]); + if (sampleOf is not null && mapping.TryGetValue(sampleOf, out string? mappedSampleOf)) + machine.Write(Data.Models.Metadata.Machine.SampleOfKey, mappedSampleOf); } #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); @@ -779,20 +779,20 @@ namespace SabreTools.Metadata.DatFiles string? sampleOf = machine.Value.ReadString(Data.Models.Metadata.Machine.SampleOfKey); // Update machine name - if (machineName is not null && mapping.ContainsKey(machineName)) - machine.Value.SetName(mapping[machineName]); + if (machineName is not null && mapping.TryGetValue(machineName, out string? mappedMachineName)) + machine.Value.SetName(mappedMachineName); // Update cloneof - if (cloneOf is not null && mapping.ContainsKey(cloneOf)) - machine.Value.Write(Data.Models.Metadata.Machine.CloneOfKey, mapping[cloneOf]); + if (cloneOf is not null && mapping.TryGetValue(cloneOf, out string? mappedCloneOf)) + machine.Value.Write(Data.Models.Metadata.Machine.CloneOfKey, mappedCloneOf); // Update romof - if (romOf is not null && mapping.ContainsKey(romOf)) - machine.Value.Write(Data.Models.Metadata.Machine.RomOfKey, mapping[romOf]); + if (romOf is not null && mapping.TryGetValue(romOf, out string? mappedRomOf)) + machine.Value.Write(Data.Models.Metadata.Machine.RomOfKey, mappedRomOf); // Update sampleof - if (sampleOf is not null && mapping.ContainsKey(sampleOf)) - machine.Value.Write(Data.Models.Metadata.Machine.SampleOfKey, mapping[sampleOf]); + if (sampleOf is not null && mapping.TryGetValue(sampleOf, out string? mappedSampleOf)) + machine.Value.Write(Data.Models.Metadata.Machine.SampleOfKey, mappedSampleOf); } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 5ab124e8..79ba0702 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -494,7 +494,7 @@ namespace SabreTools.Metadata.DatFiles } // If the parent doesn't already contain this item, add to subfolder of parent - else if (!GetItemsForBucketDB(cloneOf).Values.Contains(item.Value) || skipDedup) + else if (!GetItemsForBucketDB(cloneOf).ContainsValue(item.Value) || skipDedup) { if (subfolder) rom.SetName($"{machineName}\\{rom.GetName()}"); @@ -505,7 +505,7 @@ namespace SabreTools.Metadata.DatFiles } // All other that would be missing to subfolder of parent - else if (!GetItemsForBucketDB(cloneOf).Values.Contains(item.Value)) + else if (!GetItemsForBucketDB(cloneOf).ContainsValue(item.Value)) { if (subfolder) item.Value.SetName($"{machineName}\\{item.Value.GetName()}"); diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 7430bbe7..81466118 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -30,7 +30,11 @@ namespace SabreTools.Metadata.DatFiles /// /// Lock for statistics calculation /// +#if NET9_0_OR_GREATER + private readonly System.Threading.Lock statsLock = new(); +#else private readonly object statsLock = new(); +#endif #endregion diff --git a/SabreTools.Metadata.DatFiles/Extensions.cs b/SabreTools.Metadata.DatFiles/Extensions.cs index dfb4e6a2..d64c9fd6 100644 --- a/SabreTools.Metadata.DatFiles/Extensions.cs +++ b/SabreTools.Metadata.DatFiles/Extensions.cs @@ -63,8 +63,8 @@ namespace SabreTools.Metadata.DatFiles return default; // Try to get the value from the mappings - if (_toMergingFlagMap.ContainsKey(value)) - return _toMergingFlagMap[value]; + if (_toMergingFlagMap.TryGetValue(value, out MergingFlag mergingFlag)) + return mergingFlag; // Otherwise, return the default value for the enum return default; @@ -83,8 +83,8 @@ namespace SabreTools.Metadata.DatFiles return default; // Try to get the value from the mappings - if (_toNodumpFlagMap.ContainsKey(value)) - return _toNodumpFlagMap[value]; + if (_toNodumpFlagMap.TryGetValue(value, out NodumpFlag nodumpFlag)) + return nodumpFlag; // Otherwise, return the default value for the enum return default; @@ -103,8 +103,8 @@ namespace SabreTools.Metadata.DatFiles return default; // Try to get the value from the mappings - if (_toPackingFlagMap.ContainsKey(value)) - return _toPackingFlagMap[value]; + if (_toPackingFlagMap.TryGetValue(value, out PackingFlag packingFlag)) + return packingFlag; // Otherwise, return the default value for the enum return default; @@ -123,10 +123,10 @@ namespace SabreTools.Metadata.DatFiles public static string? AsStringValue(this MergingFlag value, bool useSecond = false) { // Try to get the value from the mappings - if (!useSecond && _fromMergingFlagMap.ContainsKey(value)) - return _fromMergingFlagMap[value]; - else if (useSecond && _fromMergingFlagSecondaryMap.ContainsKey(value)) - return _fromMergingFlagSecondaryMap[value]; + if (!useSecond && _fromMergingFlagMap.TryGetValue(value, out string? mergingFlag)) + return mergingFlag; + else if (useSecond && _fromMergingFlagSecondaryMap.TryGetValue(value, out string? mergingFlagSecondary)) + return mergingFlagSecondary; // Otherwise, return null return null; @@ -141,8 +141,8 @@ namespace SabreTools.Metadata.DatFiles public static string? AsStringValue(this NodumpFlag value) { // Try to get the value from the mappings - if (_fromNodumpFlagMap.ContainsKey(value)) - return _fromNodumpFlagMap[value]; + if (_fromNodumpFlagMap.TryGetValue(value, out string? nodumpFlag)) + return nodumpFlag; // Otherwise, return null return null; @@ -157,10 +157,10 @@ namespace SabreTools.Metadata.DatFiles public static string? AsStringValue(this PackingFlag value, bool useSecond = false) { // Try to get the value from the mappings - if (!useSecond && _fromPackingFlagMap.ContainsKey(value)) - return _fromPackingFlagMap[value]; - else if (useSecond && _fromPackingFlagSecondaryMap.ContainsKey(value)) - return _fromPackingFlagSecondaryMap[value]; + if (!useSecond && _fromPackingFlagMap.TryGetValue(value, out string? packingFlag)) + return packingFlag; + else if (useSecond && _fromPackingFlagSecondaryMap.TryGetValue(value, out string? packingFlagSecondary)) + return packingFlagSecondary; // Otherwise, return null return null; diff --git a/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs index 3bf9afc3..07498563 100644 --- a/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs @@ -1,4 +1,3 @@ -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index 8121c69c..489dbf4e 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index d8d35402..16e85eb0 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index af8b7624..ccd4d355 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index 63fbec3b..d3360791 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index 27dbd7f7..e20483bd 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index 0b790989..a51ed6df 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -19,7 +19,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { /// public override ItemType[] SupportedTypes +#if NET5_0_OR_GREATER + => Enum.GetValues(); +#else => Enum.GetValues(typeof(ItemType)) as ItemType[] ?? []; +#endif /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs index eca0b171..4940b556 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs @@ -1,4 +1,3 @@ -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index 905bc5c6..8f577769 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index 1470f347..7bbc4e2c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index 475ea2c2..b65b4c99 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index f93958dd..d3ac102c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index be0d5acb..26f5ab07 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index 29aa0ef0..eb4f30f4 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -3,7 +3,6 @@ using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs index 51f262dd..ce31ed81 100644 --- a/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs @@ -1,4 +1,3 @@ -#pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats { /// diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index f2fd6fbf..5b5cf994 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -451,10 +451,10 @@ namespace SabreTools.Metadata.DatFiles /// public Source? GetSource(long index) { - if (!_sources.ContainsKey(index)) - return null; + if (!_sources.TryGetValue(index, out var source)) + return source; - return _sources[index]; + return null; } /// @@ -1250,7 +1250,11 @@ namespace SabreTools.Metadata.DatFiles DatStatistics.ResetStatistics(); // If there are no items +#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER + if (_items is null || _items.IsEmpty) +#else if (_items is null || _items.Count == 0) +#endif return; // Loop through and add diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 62b5f8c2..9d9e9741 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 76eb6e82..c809ed4c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats {