7
votes

Comment accéder à la configuration de l'application d'un fichier .dll?

J'ai récemment éclaté une partie de mon application Winform dans une .dll. Certaines des classes de cette dll veut chercher / stocker les paramètres utilisateur. Les classes utilisent simplement le fichier de paramètres généré par VS afin qu'il ait juste fait propriétés.settings.default.somesetting = var; propriétés.settings.default.save () etc.

Quelles sont mes options maintenant que j'ai déplacé ce code sur une bibliothèque de classe / .dll?


2 commentaires

Vous recherchez une méthode d'accédant aux paramètres précédents ou êtes-vous sous l'impression que les bibliothèques de classe ne peuvent pas avoir de fichiers app.config?


Je ne sais pas ce que je cherche, c'est pourquoi je demande. Je ne peux pas obtenir mes dlls pour accéder à son app.config séparé, ni le formulaire de déploiement ClickOnce Formulaire Visual Studio incluent un fichier de paramètres de .dll.


5 Réponses :


2
votes

Cela n'a pas de sens pour moi d'avoir une DLL stocker les paramètres utilisateur. Une DLL est une bibliothèque, pas une application et n'interagit pas directement avec l'utilisateur. Si les classes de la DLL ont besoin d'accéder aux paramètres de l'utilisateur, vous pouvez les transmettre en tant que paramètres.


2 commentaires

DLL ne sont pas seulement des bibliothèques. Vous avez des dll qui sont des plugins et des interfaces différentes pouvant être échangées à chaud tandis que l'application principale est en cours d'exécution. Si le plugin nécessite des informations d'identification réseau ou quelque chose du genre, vous avez besoin de la DLL pour pouvoir lire la configuration définie dans l'application principale. Vous ne devez pas changer le constructeur de milliers de plugins car l'un d'entre eux nécessite une valeur supplémentaire


Qu'en est-il de la séparation des préoccupations? Toutes les bibliothèques ne doivent pas gérer leur propre configuration? Je pense qu'ils devraient.



2
votes

La classe de propriétés est autogénérée. C'est vraiment un wrapper sur le fichier de configuration. Si vous ne voulez pas changer votre conception, entrez simplement le code et copiez-le sur votre DLL. Mais rappelez-vous qu'il ne sera plus magiquement maintenu (régénéré). Ou vous pouvez utiliser ConfigurationManager pour obtenir directement au fichier de configuration.


0 commentaires

3
votes

L'application d'hébergement doit gérer l'interface dans le fichier de configuration, pas la DLL.

  1. Passer quels paramètres doivent être lus / modifiés dans la DLL comme paramètres ou

  2. passe dans une collection de noms de noms de paramètres pouvant être modifiée par la DLL et enregistrer les modifications apportées par la DLL à la collection lorsque le contrôle retourne à l'application d'appel.

    Il s'agit de principe similaire pour supprimer une interface de base de données de la couche d'entreprise d'une application à plusieurs niveaux et l'encapsulant en une couche de données.


0 commentaires

1
votes

Je ne le recommanderais pas (mieux utiliser votre propre classe pour les paramètres), mais vous pouvez essayer ceci: xxx


0 commentaires

0
votes

Pour ceux qui ont besoin de lire les paramètres de userDirectory / user.config , voici une solution: xxx


0 commentaires