2009-02-19 8 views
2

Si vous utilisez ResourceManager.GetString (Key), vous pouvez obtenir la valeur d'un élément dans une ressource. Existe-t-il un moyen de faire une recherche inversée pour obtenir la clé de la ressource étant donné la valeur (essentiellement dé-traduire)?Inverser un ResourceManager

Répondre

4

Vous devriez être en mesure d'obtenir le ResourceSet et d'itérer sur ses valeurs et de retourner la clé si elles sont égales. Rappelez-vous juste, vous devez comparer des valeurs, pas des références. Quelque chose le long de ces lignes (Non compilé et testé, mais quelque chose de similaire)

System.Resources.ResourceManager rm = 
    new System.Resources.ResourceManager("MyAssembly.MyResources", 
     System.Reflection.Assembly.GetExecutingAssembly()); 
    System.Resources.ResourceSet rs = 
    rm.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, 
     false, false); 
    System.Collections.IDictionaryEnumerator ide = rs.GetEnumerator(); 
    while(ide.MoveNext()) 
    { 
     if (ide.Value == val) 
      return ide.Key; 
    } 
+0

Lorsque je fais cela, je récupère un ResourceSet nul. Des idées? – brian

+0

J'ai changé les deux paramètres bool dans GetResourceSet à true et cela a fonctionné. Merci! – brian