public static T GetOrSet <T>(this ISettingStore settings, string key, Func <T> getDefaultValue, string description) { T returnValue; string keyValue = settings.Get(key); if (keyValue.IsNullOrWhiteSpace()) { returnValue = getDefaultValue(); // set default settings.Set(key, returnValue); } else { returnValue = keyValue.ToType <T>(); } var descriptionKey = $"{key}_Description"; if (!description.IsNullOrWhiteSpace() && settings.Get(descriptionKey).IsNullOrWhiteSpace()) { settings.Set(descriptionKey, $@"## {description}"); } return(returnValue); }