反转 ResourceManager

发布于 2024-07-13 10:51:35 字数 92 浏览 4 评论 0原文

如果执行 ResourceManager.GetString(Key),则可以获得资源中项目的值。 有没有办法进行反向查找以从给定值的资源中获取密钥(本质上是反翻译)?

If you do ResourceManager.GetString(Key), you can get the value of an item in a resource. Is there a way to do a reverse lookup to get the key from the resource given the value (essentially de-translate)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

胡大本事 2024-07-20 10:51:36

您应该能够获取 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;
  }

You should be able to get the ResourceSet and iterate over it's values and return the key if they are equal. Just remember, you need to compare values, not references. Something along these lines (Not compiled and tested, but something similar)

  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;
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文