using System; using System.Configuration; using System.Linq.Expressions; using Developpez.Dotnet.Linq; using JetBrains.Annotations; namespace Developpez.Dotnet.Configuration { /// /// Fournit des méthodes en rapport avec la configuration et les paramètres d'application. /// public static class ConfigurationExtension { /// /// Met à jour les paramètres de l'application depuis une version précédente si nécessaire. /// /// Type qui gère l'accès aux paramètres d'application /// Objet qui gère l'accès aux paramètres d'application (par exemple Settings.Default ou My.Settings) /// Nom du paramètre indiquant si les paramètres d'application ont été mis à jour /// Pour utiliser cette méthode, vous devez définir dans vos paramètres d'application un paramètre de type /// dont la valeur par défaut est false, et indiquer son nom à la méthode via le paramètre upgradeFlagName. La mise à /// jour sera effectuée si et seulement si ce paramètre d'application vaut false, et la valeur sera mise à true pour indiquer que /// la mise à jour a été effectuée. public static void UpgradeIfRequired( [NotNull] this TSettings settings, [NotNull] string upgradeFlagName) where TSettings : ApplicationSettingsBase { settings.CheckArgumentNull("settings"); upgradeFlagName.CheckArgumentNull("upgradeFlagName"); bool flag = (bool)settings[upgradeFlagName]; if (!flag) { settings.Upgrade(); settings[upgradeFlagName] = true; settings.Save(); } } /// /// Met à jour les paramètres de l'application depuis une version précédente si nécessaire. /// /// Type qui gère l'accès aux paramètres d'application /// Objet qui gère l'accès aux paramètres d'application (par exemple Settings.Default ou My.Settings) /// Expression qui renvoie le paramètre indiquant si les paramètres d'application ont été mis à jour /// Pour utiliser cette méthode, vous devez définir dans vos paramètres d'application un paramètre de type /// dont la valeur par défaut est false, et l'indiquer à la méthode via le paramètre upgradeFlagSelector. La mise à /// jour sera effectuée si et seulement si ce paramètre d'application vaut false, et la valeur sera mise à true pour indiquer que la /// mise à jour a été effectuée. public static void UpgradeIfRequired( [NotNull] this TSettings settings, [NotNull] Expression> upgradeFlagSelector) where TSettings : ApplicationSettingsBase { settings.CheckArgumentNull("settings"); upgradeFlagSelector.CheckArgumentNull("upgradeFlagSelector"); var upgradeFlagName = LinqHelper.GetPropertyName(upgradeFlagSelector); settings.UpgradeIfRequired(upgradeFlagName); } } }