public static T GetBagValue <T>(this IShouldHaveBags haveBags, string bagKey, T defaultBagValue = default(T)) { var bags = haveBags.TryGetBags(true); if (!bags.ContainsKey(bagKey)) { return(defaultBagValue); } var bagItemValue = bags[bagKey]; var bagItemConvertTo = SafeConvertTo <T>(bagItemValue); return(bagItemConvertTo); }
public static void SetBagSubValue(this IShouldHaveBags haveBags, string bagKey, string subKey, object subValue) { var bags = haveBags.TryGetBags(true); var containsBagValue = bags.ContainsKey(bagKey); if (!containsBagValue) { bags[bagKey] = new ConcurrentDictionary <string, object>(StringComparer.OrdinalIgnoreCase); } var convertToDic = SafeConvertTo <IDictionary <string, object> >(bags[bagKey]); if (convertToDic == null) { convertToDic = new ConcurrentDictionary <string, object>(StringComparer.OrdinalIgnoreCase); } convertToDic[subKey] = subValue; }
public static T GetBagSubValue <T>(this IShouldHaveBags haveBags, string bagKey, string subKey, T defaultSubValue) { var bags = haveBags.TryGetBags(true); var containsBagValue = bags.ContainsKey(bagKey); if (!containsBagValue) { return(defaultSubValue); } var theBagValue = bags[bagKey]; var subDic = SafeConvertTo <IDictionary <string, object> >(theBagValue); var theSubKey = subDic.Keys.SingleOrDefault(x => x.Equals(subKey, StringComparison.OrdinalIgnoreCase)); if (theSubKey == null) { return(defaultSubValue); } var convertTo = SafeConvertTo <T>(subDic[theSubKey]); return(convertTo); }