2009-02-19 2 views
2

Если вы используете ResourceManager.GetString (Key), вы можете получить значение элемента в ресурсе. Есть ли способ сделать обратный поиск, чтобы получить ключ от ресурса с учетом значения (по существу, де-перевод)?Reverse a ResourceManager

ответ

4

Вы должны иметь возможность получить ResourceSet и перебрать его значения и вернуть ключ, если они равны. Просто помните, вам нужно сравнить значения, а не ссылки. Что-то в этом роде (не скомпилировано и не проверено, но что-то подобное)

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

Когда я это делаю, я возвращаю нулевой ResourceSet. Есть идеи? – brian

+0

Я изменил оба параметра bool в GetResourceSet на true, и он сработал. Благодаря! – brian

Смежные вопросы