<PackageReference Include="Relativity.Transfer.Client" Version="7.2.7" />

DictionaryExtensions

public static class DictionaryExtensions
using System; using System.Collections.Generic; namespace Relativity.Transfer { public static class DictionaryExtensions { public static bool IsEqual<TKey, TValue>(this IDictionary<TKey, TValue> x, IDictionary<TKey, TValue> y) { if (x != null) { if (y != null) { if (((ICollection<KeyValuePair<TKey, TValue>>)x).Count == ((ICollection<KeyValuePair<TKey, TValue>>)y).Count) { foreach (KeyValuePair<TKey, TValue> item in (IEnumerable<KeyValuePair<TKey, TValue>>)x) { if (!y.TryGetValue(item.Key, out TValue value)) return false; if (!value.Equals(item.Value)) return false; } return true; } return false; } return false; } return false; } public static Guid GetGuidValue(this IDictionary<string, object> dictionary, string name, Guid defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && Guid.TryParse(dictionary[name].ToString(), out Guid result)) return result; return defaultValue; } public static Guid? GetNullableGuidValue(this IDictionary<string, object> dictionary, string name, Guid? defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); Guid result; if (ContainsNonNullValue(dictionary, name) && Guid.TryParse(dictionary[name].ToString(), out result) && result != Guid.Empty) return result; return defaultValue; } public static string GetStringValue(this IDictionary<string, object> dictionary, string name, string defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (!ContainsNonNullValue(dictionary, name)) return defaultValue; return dictionary[name].ToString(); } public static int GetInt32Value(this IDictionary<string, object> dictionary, string name, int defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && int.TryParse(dictionary[name].ToString(), out int result)) return result; return defaultValue; } public static long GetInt64Value(this IDictionary<string, object> dictionary, string name, long defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && long.TryParse(dictionary[name].ToString(), out long result)) return result; return defaultValue; } public static double GetDoubleValue(this IDictionary<string, object> dictionary, string name, double defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && double.TryParse(dictionary[name].ToString(), out double result)) return result; return defaultValue; } public static Uri GetUriValue(this IDictionary<string, object> dictionary, string name, Uri defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name)) try { return new Uri(dictionary[name].ToString()); } catch (ArgumentNullException) { return null; } catch (UriFormatException) { return new Uri(dictionary[name].ToString(), UriKind.Relative); } return defaultValue; } public static bool GetBooleanValue(this IDictionary<string, object> dictionary, string name, bool defaultValue) { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && bool.TryParse(dictionary[name].ToString(), out bool result)) return result; return defaultValue; } public static TEnum GetEnumValue<TEnum>(this IDictionary<string, object> dictionary, string name, TEnum defaultValue) where TEnum : struct { if (dictionary == null) throw new ArgumentNullException("dictionary"); if (ContainsNonNullValue(dictionary, name) && Enum.TryParse(dictionary[name].ToString(), out TEnum result)) return result; return defaultValue; } private static bool ContainsNonNullValue(IDictionary<string, object> dictionary, string name) { return dictionary.ContainsKey(name) && dictionary[name] != null; } } }