예제 #1
0
        public void SetSetting <T>(SettingEnum settingEnum, T value)
        {
            var strName   = settingEnum.ToString();
            var strValue  = Equals(value, default(T)) ? null : value.ToString();
            var newValues = Data.Where(pair => !Equals(pair.Key, strName)).ToList();

            newValues.Add(new KeyValuePair <string, string>(strName, strValue));
            Data = ImmutableSortedList.FromValues(newValues);
        }
        public static T Get <T>(this ISettingsProvider provider, SettingEnum setting)
        {
            Type?type = typeof(T);

            if (type.IsValueType)
            {
                type = Nullable.GetUnderlyingType(typeof(T));
                if (type == null)
                {
                    throw new ArgumentException("Type parameter must be a type accepting null values.", nameof(T));
                }
            }

            var value = provider[setting.ToString()];

            return(value != null ? (T)Convert.ChangeType(value, type, CultureInfo.InvariantCulture) : default);
예제 #3
0
        public T GetSetting <T>(SettingEnum settingEnum, T defaultValue)
        {
            string stringValue;

            if (!Data.TryGetValue(settingEnum.ToString(), out stringValue))
            {
                return(defaultValue);
            }
            if (null == stringValue)
            {
                return(default(T));
            }
            if (typeof(T).IsEnum)
            {
                return((T)Enum.Parse(typeof(T), stringValue));
            }
            return((T)Convert.ChangeType(stringValue, typeof(T)));
        }