0

Je suis en train de créer une application graphique qui sera le frontal d'un fichier de configuration XML.Implémenter le modèle d'instance d'objet dans PropertyGrid

La structure XML définit un ensemble d'instances d'objet. C'est-à-dire, les noms de type et les valeurs de propriété qui doivent être instanciées dans l'application consommatrice (service Windows).

Donc il y a trois couches:

ConfigurationObject <--> ComponentObjects <--> PropertyGrid 

Le ConfigurationObject sérialisés dans le format XML approprié pour le service Windows. Les ComponentObjects sont les mêmes types qui sont utilisés par le service Windows.

Le problème que je rencontre est de déterminer la meilleure façon de synchroniser les trois couches.

Ma première implémentation Je voudrais mettre à jour les propriétés individuelles lorsqu'elles ont été modifiées. Cependant, cette approche n'a pas fonctionné très bien quand je dois mettre à jour des objets complexes à l'interface utilisateur (Même si je crois que je sais ce que le problème était maintenant)

Mon approche actuelle consiste à utiliser TypeConverters pour convertir entre le ConfigurationObject et le ComponentObjects qui fonctionne bien jusqu'à ce qu'un rendu compte que ma logique actuelle ne tient pas compte de la BrowseableAttribute (depuis que je simplement itérer sur toutes les ComponentObject propriétés lors de la conversion à un ConfigurationObject)

Alors avant que je passe plus de temps sur mon approche actuelle, je veux être sûr que je suis sur la bonne voie. Y a-t-il une approche plus simple? Y a-t-il un modèle/modèle de conception que je peux utiliser dans une telle situation?

Merci, Karl

Répondre

1

j'ai pu les cernées pièces manquantes à mon problème.

J'ai créé un TypeDescriptionProvider pour le ConfigurationObject ce fournisseur a été utilisé pour la correspondance entre les ComponentObjects Propriétés et la représentation de ConfigurationObject de ces mêmes propriétés.

Les ComponentObjects ont été décorées avec TypeConverter s qui, converties et de String

La clé était d'attribuer le ConfigurationObject à PropertyGrid et non la ComponentObjects.

Questions connexes