1

J'ai un fichier "GUI Strings" .resx dans mon application qui contient toutes les chaînes que j'affiche. Je ne peux évidemment accéder à chaque chaîne directement via Resources.Resource_GUI_Strings.CameraSettings_BrightnessLabelAffichage de toutes les chaînes de ressources dans un fichier resx

Mais comment puis-je lister tous les paramètres dans le fichier .resx, comme leur (nom, valeur) paire, est ma seule option en utilisant la réflexion?

Je souhaite répertorier toutes les paires (c'est-à-dire CameraSettings_BrightnessLabel & "Luminosité") afin que l'utilisateur puisse modifier la chaîne de chaque élément. C'est ainsi qu'ils peuvent localiser l'interface graphique. Je ne veux pas complètement internationaliser l'application, les exigences sont seulement pour l'utilisateur d'être en mesure de le faire eux-mêmes.

Je dois donc pouvoir lire les paires de valeurs du fichier .resx et les réécrire si les utilisateurs les éditent. Juste pour ajouter Je veux faire cela à l'exécution dans l'application elle-même, donc je ne peux pas analyser le fichier .resx sur le disque.

+0

Pourquoi ne pas utiliser la réflexion? Cela ne ressemble pas à un morceau de code qui sera exécuté 1000 fois dans une boucle. Il semblerait que ce soit sur un certain type de menu Edition-> Options, donc même avec Reflection, vous ne remarquerez vraiment aucun type de coup de performance. – BFree

+0

Je ne suis pas sûr de comprendre vos exigences. Voulez-vous conserver les valeurs entre les exécutions d'application? Chaque utilisateur personnalise-t-il sa propre version de l'interface graphique, ou les personnalisations doivent-elles être partagées par tous les utilisateurs? – Greg

+0

Le client est satisfait de l'internationalisation de base, donc les seules choses qu'il souhaite sont la possibilité pour chaque utilisateur de changer n'importe quelle étiquette dans l'interface graphique de l'étiquette "Anglais" par défaut à la leur. Les valeurs doivent donc persister mais ne concernent que cet utilisateur de l'interface graphique. –

Répondre

2

Normalement, j'utiliserais les classes ResXResourceReader et ResXResourceWriter, mais je suppose que vos fichiers resx seront verrouillés lors de l'exécution. Il est peut-être préférable de stocker le texte dans une base de données au lieu de fichiers de ressources pour contourner ce problème.

This answer montre comment créer un fournisseur de ressources/gestionnaire de ressources personnalisé pour stocker/modifier des ressources dans la base de données. Alternativement, vous pouvez renoncer complètement au modèle de ressource et lancer votre propre solution.

Questions connexes