J'ai un ensemble de classes de gestion de configuration XML personnalisées dans .NET.Sérialiser/désérialiser vers/à partir de plusieurs fichiers de configuration XML
Il y a deux champs de configuration dans mon application:
utilisateur: le paramètre s'applique à l'utilisateur quel que soit le compte qu'elle est connecté à. Stocké dans un fichier de configuration XML dans le répertoire de l'utilisateur.
Utilisateur/compte: Le paramètre s'applique à l'utilisateur lorsqu'il est connecté à un compte particulier. Stocké dans un fichier de configuration XML dans le répertoire de l'utilisateur sous un sous-répertoire spécifique au compte.
Les deux documents XML ont la même structure et peuvent être modifiés manuellement. Lorsque l'application démarre, je lis la configuration XML du profil de l'utilisateur et la configuration XML du répertoire Utilisateur/Compte. Je fusionne ensuite les deux documents XML en un seul XDocument, puis je désérialise le XML en objets modélisés après les sections de XDocument. Si un paramètre Utilisateur/Compte est présent, il doit remplacer le paramètre Utilisateur. Exemple:
fichier utilisateur:
<FileSettings>
<DownloadPath>C:\downloads</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
utilisateur/fichier de compte pour le compte XYZ:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
</FileSettings>
Résultat après fusion:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
Dans l'exemple ci-dessus, un objet FileSettings avec 2 propriétés - DownloadPath et UploadPath sera instancié à partir de la section.
Voici mon problème: Je n'ai aucune idée du fichier de configuration (c'est-à-dire de la portée) dont proviennent le DownloadPath et le UploadPath. Par conséquent, lorsque l'objet doit à nouveau sérialiser, il ne sait pas quelles propriétés vont dans quel fichier. Quelle est la meilleure façon de stocker la "source", propriété par propriété, de sorte que je puisse m'assurer qu'un paramètre est écrit dans le même fichier de configuration que celui où il a été lu?
Merci. Après la fusion, est-il possible d'ajouter la source de valeur de chaque propriété?
C'était ma première pensée. J'allais faire C: \ path DownloadPath>. Mais je n'étais pas sûr de savoir comment représenter cela dans l'objet une fois qu'il serait désérialisé. Je veux éviter d'avoir une propriété source correspondante pour chaque propriété de l'objet. –
Existe-t-il un moyen de "décorer" chaque propriété avec un attribut source sous forme d'objet de la façon dont nous utilisons les attributs sur un élément XML? –
vérifier la publication mise à jour, j'ai ajouté un commentaire pour src comme attribut. –