J'utilise C# avec le framework .NET 3.5 pour écrire une application.Aide sur l'utilisation de LINQ et XML avec Enums
J'ai un ENUM comme celui-ci,
public static enum SettingOneType { FooA, FooB, FooC }
J'ai aussi un XDocument que je charge comme celui-ci dans une méthode Load(),
LoadXML(){
...
XDocument SettingsDocument;
if(File.Exists(path)
{
XElement SettingsElement = new XElement("DeviceSettings",
new XElement("Setitng1", SettingOneType.FooA.ToString()),
new XElement("Setting2", ... ));
XDeclaration dec = new XDeclaration("1.0", "UTF-8", "yes");
SettingsDocument = new XDocument(dec, SettingsElement);
SettingsDocument.Save(xpath);
}
else SettingsDocument = XDocument.Load(path);
}
Ce que je me demande est, est-il un moyen de lire ces paramètres d'une manière fortement typée. Parce que je veux avoir une propriété dans mon application qui accédera à la valeur dans le fichier xml comme ça ...
public SettingOneType SettingOne
{
get{
SettingOneType x = SettingsDocument. //Here I know I can use LINQ statements to file the value I want but is there a way to cast the value to the correct type without using a giant switch statement or something?
}
}
NOTE: Avant que quelqu'un suggère que j'utiliser les fichiers intégrés Paramètres d'application qui sont disponibles avec. NET, ne dérange pas. J'utilise habituellement ceux-ci mais pour ce projet il y a une raison que je ne peux pas que je ne veux pas expliquer.
Donc, ce serait lire et enregistrer tous les paramètres à la fois? – PICyourBrain
Oui. Je recommande également cela, c'est plus facile que les alternatives, sauf si vous avez d'énormes quantités de données - alors peut-être une alternative devrait être envisagée. Et je veux dire énorme - la sérialisation XML est _quite_ performant. –
JordanS: Oui. La mise à jour d'un seul paramètre implique généralement la lecture de la classe entière, la modification de la valeur et la sérialisation de tous les fichiers. Le surcoût est minime pour les petites classes, mais évidemment si vos fichiers de paramètres sont énormes, ce n'est pas la meilleure approche. – Addys