C# 资源字符串,从多个选项中选择

C# 资源字符串,从多个选项中选择,c#,asp.net,localization,resources,C#,Asp.net,Localization,Resources,我有一个应用程序,在特定情况下使用多个不同的短语。我想将这些短语放入资源文件中以启用本地化。在运行时,我希望能够随机选择N个字符串中的一个来显示 例如,假设我向用户显示一个问候语。我可能会用以下短语作为问候语的变体 你好 嘿 欢迎光临 现在我知道我可以将它们存储在我的资源文件中,因为它是一个键/值对 欢迎你 问候语1 迎接变数2 如何在运行时随机选择其中一个 我是否需要一个配置文件,存储“问候语变体”的数量,读入该配置文件,然后选择一个随机数,然后提取该资源 有更好的方法吗?我个人可能会使用配置

我有一个应用程序,在特定情况下使用多个不同的短语。我想将这些短语放入资源文件中以启用本地化。在运行时,我希望能够随机选择N个字符串中的一个来显示

例如,假设我向用户显示一个问候语。我可能会用以下短语作为问候语的变体

  • 你好
  • 欢迎光临
  • 现在我知道我可以将它们存储在我的资源文件中,因为它是一个键/值对

  • 欢迎你
  • 问候语1
  • 迎接变数2
  • 如何在运行时随机选择其中一个

    我是否需要一个配置文件,存储“问候语变体”的数量,读入该配置文件,然后选择一个随机数,然后提取该资源


    有更好的方法吗?

    我个人可能会使用配置解决方案,因为检索资源非常容易,只需将给定范围中的随机数附加到资源键前缀,然后按键检索资源


    另一个选项是查询资源文件中的所有键(使用其中一个解决方案),并使用LINQ选择具有给定前缀的键。您可以从结果集中随机选择一个。当然,这种解决方案效率较低,因为它需要对所有现有资源进行循环。

    我不喜欢将随机字符串连接到预定义的键前缀。如果他添加更多值,你怎么知道你的随机数应该生成的最大值是多少?第一个解决方案本身需要维护,但看看他在第二个解决方案中提供的链接,它包含了一个遍历所有资源的方法,这使您能够计算相关的值。这是第一个解决方案中使用的配置值,第二个解决方案中使用的枚举,这是他的另一个选项@Zero,我指的是他的第一个建议。我理解这并不理想,但在我看来,这是两个解决方案中更好的选项。。。您可以编写一个单元测试来验证前缀为+id的资源是否可用于配置中设置的范围。