2009-02-19 32 views
2

如果您執行ResourceManager.GetString(Key),則可以獲取資源中項目的值。有沒有一種方法可以通過反向查找來從給定值的資源中獲取密鑰(實質上是de-translate)?反轉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 2009-02-19 15:42:30