0

我正在开发一个工作流服务,它将(最终)包含许多用于与用户交互的不同工作流。

因此,这些工作流将需要向用户发布消息,并且这些消息需要本地化。

我想在启动工作流以设置所需的文化时使用 RESX 文件并添加一个额外的参数。

然而,这似乎失败了,因为 WF 服务(尤其是在持久性方面)根据需要创建新线程,尽管在开始时设置了当前文化(并且工作了一段时间),最终我的工作流程将返回默认文化。

我还尝试设置Culture由 RESX 文件创建的静态类的参数,但这似乎会全面改变所有正在运行的工作流的文化(可能需要在不同的语言环境中运行)。

有没有办法解决这个问题?

编辑

我知道我可以使用一个ResourceManager类,因为我可以传递我想要使用的文化,但是我需要使用字符串而不是使用生成的类中可用的强类型资源名称——而且很容易出错。

编辑2:

还有一件事我忘了提——但它与上一次关于ResourceManager. 由于会有很多工作流程,我希望我可以设置环境和方法,让其他稍微不太懂计算机的人制作这些工作流程(或者,至少,帮助制作它们)。由于与用户的沟通至关重要,因此使用资源应该尽可能简单。

4

2 回答 2

0

尝试设置一个工作流变量来保存当前的文化,并且无论何时您需要使用它来本地化文本,您都可以从工作流变量中提取值。这也解决了如果您的工作流程可以暂停,然后在世界另一端的不同服务器上恢复的机会,因此它保留了它产生的原始文化。

于 2013-06-06T18:09:09.357 回答
0

我已经设法使用这篇博文提出了一个解决方案。通过修改 T4 模板,我最终得到了非静态资源类。接下来,我创建了一个可序列化的包装类来根据工作流的需要实例化所有这些资源类。

这很容易使用(使用自定义工作流操作来创建资源的实例),并且在工作流中使用资源非常容易:resources.GeneralStrings.Timeout例如。

于 2013-06-24T08:55:04.740 回答