2010-07-04 10 views
0

Mon projetConfiguration pour plusieurs projets

J'écris une application Winform en utilisant VS C# 2.0 qui se compose de plusieurs bibliothèques et deux executables, chacun dans son propre fichier de projet et partie de la même solution.

Chaque projet a sa propre classe de paramètres dont les paramètres de configuration. Certains paramètres sont spécifiques au projet, d'autres sont nécessaires pour plusieurs projets (mais pas pour tous), et d'autres dépendent du modèle d'un périphérique matériel connecté via USB à l'ordinateur utilisateur (et sont sélectionnés lors de l'exécution).

La classe de paramètres comprend les énumérations, les propriétés et les méthodes de chargement et d'enregistrement.

Actuellement, j'ai un formulaire avec une grille de propriétés qui instancie tous les paramètres de toutes les classes et permet à l'utilisateur de modifier la configuration. Il appartient au projet exécutable principal.

Mon problème

je besoin d'un moyen pour les utilisateurs de configurer l'ensemble de l'application (appelons un configurateur ), donc j'ai essayé de créer un autre projet qui aurait la forme avec la grille de la propriété , mais s'est terminé avec un problème de référence circulaire entre le configurateur et mon exécutable principal. Le configurateur doit s'exécuter seul ou être appelé à partir de l'exécutable principal.

Aussi, je ne connais pas un bon moyen de répliquer les changements de la valeur d'un paramètre commun à ses homologues. Par exemple, si le paramètre p est commun aux paramètres des classes de projets A et B, lorsqu'un utilisateur change Ap valeur, le configurateur devrait changer Bp valeur (et la même chose pour l'inverse). La seule solution que j'ai pensé résoudre ceci implique un cauchemar de clauses if sur le gestionnaire d'événements PropertyValueChanged de la grille de propriétés.

Merci, Heiddy

Répondre

0

Afin de réduire la dépendance circulaire, vous devez inclure les classes abstraites et interfaces en conséquence. Bibliothèque de base: se compose de toutes les classes "Données", implémentant IPropertyChangedNoitifier et qui doit être cohérente tout au long. Le chargement/l'enregistrement de la configuration doit être enregistré dans cette bibliothèque elle-même.

Bibliothèque de configurations: référence Bibliothèque de base et effectue des modifications de configuration et appelle certains événements sur le changement de configuration. Cependant, ce projet ne doit contenir que l'interface utilisateur à configurer.

Projet de configuration: charge et exécute l'interface utilisateur de la bibliothèque de configuration.

Projet réel: Bibliothèque de base de références et de configuration, et vous pouvez charger l'interface de configuration de ce projet ainsi que d'un autre projet.Parler de la réplication des paramètres d'exécution, vous pouvez regarder les événements de modifications de contenu de fichier par File System Watcher et recharger votre config après certaines millsecondes une fois que les modifications de fichiers sont détectées.

+0

Merci pour votre réponse! Je viens de commencer à lire sur l'implémentation de IpropertyChangedNotifier. –