【问题标题】:Reverse lookup in a resource file?在资源文件中反向查找?
【发布时间】:2012-03-29 17:16:03
【问题描述】:

使用 C#,我需要反向查找我的资源文件。我知道如何使用 ResourceManager 类获取字符串值,但我现在想做相反的事情。我需要先将资源文件加载到 xml 文件中吗?

我想这样做的原因是因为我有一些硬编码的英语枚举,并且我的资源文件包含英语到西班牙语的键和值。因此,当我的代码正在寻找 WorkflowSupport.Completed 枚举但工作流返回“Terminado”而不是“Completed”时,它将失败。

我特别想做的是:

我有一个 SharePoint 工作流,它返回工作流所在的步骤。我已经本地化了这个工作流,因此它不会返回“已完成”,而是返回“Terminado”。我有一个包含五个硬编码值的枚举,这些值与工作流的各种状态(已完成、已取消、已重新分配、已终止和正在处理)相匹配。由于工作流返回“Terminado”而不是“Completed”,因此代码无法将“Terminado”与任何枚举值匹配并失败。我想在我的资源文件中进行反向查找,所以如果我得到像“Terminado”这样的值,我可以返回 “Completed”并成功匹配枚举成员“Completed”。

如果有更好的方法来做到这一点,我全神贯注:)

【问题讨论】:

  • 您是否将枚举名称与可本地化的字符串值进行比较?
  • 是的,在枚举上使用 .ToString() 方法。但是它会失败,因为本地化的字符串是西班牙语,而枚举是英语
  • 但是你为什么要这样做呢?您不能将您的枚举值称为“COMPLETED”,而您的资源键“COMPLETED”有两个值:eng:“Completed”,esp:“Terminado”。所以你可以通过文化不变的键“COMPLETED”访问资源?
  • 哦...我可能明白了,可能您正在将某个文本框(或类似的东西)中的值与枚举值进行比较......对吗?请在你的问题中具体说明你在做什么,因为可能有更好的方法来做到这一点......
  • 我可以在我的资源文件中添加另一个条目,一个用于“Completed”->“Terminado”,一个用于“Terminado”->“Completed” 我没有从文本框中获取任何值,我在枚举中获取五个值之一,但一端是西班牙语,另一端是英语

标签: c# resource-files


【解决方案1】:

您必须比较它们的值,而不是比较枚举的字符串值。

例如,如果您正在使用组合框,则每个项目都有一个文本和一个值(枚举的数值),用户选择文本,您只需将值转换回您的枚举类型。

您使用的是表单还是 WPF?

【讨论】:

  • OP 使用的是共享点工作流,而不是 winforms 控件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多