web-dev-qa-db-fra.com

Obtention dynamique d'une chaîne à partir de ressources de chaînes

Je travaille sur une application C # .NET localisée et nous utilisons un strings.resx fichier pour traduire les chaînes codées en dur dans l'application. J'utilise le code suivant pour les extraire:

using MyNamespace.Resources

...

string someString = strings.someString;

Mais, maintenant, je veux pouvoir définir le nom de la chaîne dans l'appel, quelque chose comme ceci:

string someString = GetString("someString");

J'ai joué un peu avec le ResourceManager, mais je ne trouve pas de moyen de le diriger vers mon strings.resx fichier.

Comment je fais ça?

30
Bart Friederichs

Une petite recherche a fait l'affaire. J'ai le droit ResourceManager disponible dans ma classe strings:

ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");
48
Bart Friederichs

ResourceManager.GetString devrait faire l'affaire.

Exemple supprimé de MSDN:

ResourceManager rm = new ResourceManager("RootResourceName",
                                         typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");
22
Vlad

J'ai eu le même problème en utilisant ASP.NET Core MVC et j'ai réussi à le résoudre en utilisant

ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");

Très similaire à la solution de @ Vlad, mais sinon j'avais un MissingManifestResourceException

11
skamlet

Il existe un moyen beaucoup plus simple de le faire

 [NameOfyourResxfile].ResourceManager.GetString("String Name");

dans ton cas

strings.resx.ResourceManager.GetString("someString");
7
batmaci

Vous pouvez écrire une méthode statique comme celle-ci:

public static string GetResourceTitle<T>(string key)
{
  ResourceManager rm = new ResourceManager(typeof(T));
  string someString = rm.GetString(key);
  return someString;
}

Et appelez n'importe où:

var title=  GetResourceTitle<*YouResourceClass*>(key);

Il est utile lorsque vous souhaitez disposer d'une fonction générique pour obtenir la chaîne de n'importe quel fichier de ressources.

4
A.Dara