DictionaryExtensions
Represents extension methods for common dictionary-based operations.
using System;
using System.Collections.Generic;
namespace Relativity.DataExchange
{
internal static class DictionaryExtensions
{
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 dictionary[name].ToString();
return defaultValue;
}
public static int GetInt32Value(this IDictionary<string, object> dictionary, string name, int defaultValue)
{
return dictionary.GetInt32Value(name, defaultValue, null);
}
public static int GetInt32Value(this IDictionary<string, object> dictionary, string name, int defaultValue, int? minValue)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");
if (ContainsNonNullValue(dictionary, name) && int.TryParse(dictionary[name].ToString(), out int result)) {
if (minValue.HasValue) {
int num = result;
int? nullable = minValue;
if ((num < nullable.GetValueOrDefault()) & nullable.HasValue)
return defaultValue;
}
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)
{
if (dictionary.ContainsKey(name))
return dictionary[name] != null;
return false;
}
}
}