diff --git a/SabreTools.Models/Internal/DictionaryBase.cs b/SabreTools.Models/Internal/DictionaryBase.cs index 1a0077fd..c62bb2bc 100644 --- a/SabreTools.Models/Internal/DictionaryBase.cs +++ b/SabreTools.Models/Internal/DictionaryBase.cs @@ -12,9 +12,18 @@ namespace SabreTools.Models.Internal /// public T? Read(string key) { - if (!ValidateKey(key)) + try + { + if (!ValidateKey(key)) + return default; + if (this[key] is not T) + return default; + return (T?)this[key]; + } + catch + { return default; - return (T?)this[key]; + } } /// @@ -25,7 +34,7 @@ namespace SabreTools.Models.Internal if (!ValidateKey(key)) return null; - bool? asBool = Read(key); + bool? asBool = Read(key); if (asBool != null) return asBool; @@ -46,7 +55,7 @@ namespace SabreTools.Models.Internal if (!ValidateKey(key)) return null; - double? asDouble = Read(key); + double? asDouble = Read(key); if (asDouble != null) return asDouble; @@ -66,7 +75,7 @@ namespace SabreTools.Models.Internal if (!ValidateKey(key)) return null; - long? asLong = Read(key); + long? asLong = Read(key); if (asLong != null) return asLong;