Je sauvegarder les paramètres de l'utilisateur local au fichier XML. Le programme contient une classe "Paramètres" qui serialize lorsque le programme est fermé et désoriencialise quand il est démarré la prochaine fois. Mais le problème est que le programme est changé tout le temps, et lorsque je crée une version suivante, je souhaite que les paramètres de l'utilisateur soient enregistrés. Mais le programme peut contenir de nouveaux champs de paramètres, puis le programme démarrera et désérésialisé l'ancien fichier XML - de nouveaux champs seront NULL. Maintenant, je vérifie tous les champs comme code difficile dans le programme, comme si vous ressemblez:
class Settings { public string Field1 (DefaultValue: "defaultvalue1"); public string Field2 (DefaultValue: "defaultvalue2"); } public void Main { Settings sts = (Settings)Deserialise(path); foreach(var fld in typeof(sts)) { if(fld.Value == null) fld.Value = Settings.Fields[fld].DefaulValue; } }
3 Réponses :
Oui, il est possible, utilisez simplement le moyen standard pour définir des valeurs standard:
class Settings { public string Field1 = "defaultvalue1"; public string Field2 = "defaultvalue2"; } public void Main { Settings sts = (Settings)Deserialise(path); /* not needed foreach(var fld in typeof(sts)) { if(fld.Value == null) fld.Value = Settings.Fields[fld].DefaulValue; }*/ }
Oui, j'utilise toujours cela et ça marche. Le XMLSerializer est assez indulgent.
Bon travail, ça a l'air si facile.
Incroyable, ça marche! Il s'est tourné pour être plus facile que je pensais :) merci! Exemple Soultion sur github: github.com/tereami/consoleAppestDeserialize
Ici i Google It. peut-être l'essayer?
Utiliser l'attribut par défaut: defaultvalueattribute code> p>
Cet attribut ne fonctionne que lors de la sérialisation. Pendant la désérialisation, la valeur reste nulle.
Le fichier XML Paramètres.Settings a été conçu pour les paramètres de projet statiques et, à l'aide des paramètres Scoped utilisateur, peut être enregistré au moment de l'exécution. Changez-vous tellement les paramètres qu'il n'a plus les valeurs "anciennes" ni simplement ajouter à la liste des paramètres?
Si juste l'ajout, vous n'avez pas besoin de boucler les paramètres un par un et essayez de deviner leurs types avec des valeurs que vous pouvez simplement faire cela: p> et écrire dans le fichier de paramètres: p> donc si si Vous ne pouvez pas remplacer votre fichier Paramètres.xml, ma suggestion consiste à modéliser vos paramètres à une classe contenant tous vos paramètres chargés au moment de l'exécution et que vous manquez, écrivez-le sur le fichier de paramètres avec votre valeur par défaut: p > Properties.Settings.Default.MyMissingSetting = "MyDefaultValue"