我们有一个程序在一个特定行业中使用,并且具有特定于该行业的字符串。我们现在的情况是它可以在另一个行业中使用,我们希望为该行业定制字符串而不重复我们的代码库。
问题空间与本地化非常相似。我们是否会为每个行业提供单独的资源组合?如果是这样,我们什么时候选择使用哪个程序集,我们可以在安装时执行此操作还是需要在编译时?我们如何保持单独的资源程序集同步,以便在每个资源程序集中显示相同的消息键?
这样做的最佳方式是什么?
答案 0 :(得分:1)
让我重新说一下:你有一个可以在各个行业中使用的工业应用程序和唯一不同的东西是资源(即字符串,布局,可能是图像和声音) 。其他代码 保持不变 。
在这种情况下,您的问题不仅仅是类似的,它实际上与本地化相同。因此,您可以使用Satellite Assemblies
现在,如果您想单独打包这样创建的应用程序或者分配一个带有两个问题空间的应用程序,则由您决定
对我来说第一个似乎更真实的场景 - 您需要决定在编译时包含哪个.resx文件(即在项目准备期间,您将使用问题空间资源覆盖现有资源,然后继续编译,应该给你不同的应用程序风格;在这种情况下我也会修改他们的名字。)
后者需要您在运行时手动实例化ResourceManager
以从有效的附属程序集中读取 - 它可能基于某些配置文件。这意味着更多的工作(你需要实际修改你的代码),你最终会同时分发你的应用程序的两种风格,也就是说你无法控制客户如何使用它。从商业角度来看,这可能有点危险。
编辑(自我注意:仔细阅读整个问题)
不知怎的,我设法错过了安装时间和编译时间。我相信编译时间是答案,因为我在配置驱动的交换机部分给出了相同的原因:您将打包资源,而您将无法控制客户如何使用它。一些聪明的家伙会想出来,这是肯定的。
答案 1 :(得分:-1)
我建议使用具有键值对的属性文件。如果您当前具有行业特定字符串,请使用对属性文件的调用替换它们。显然你会将这些字符串缓存在某个容器中。我不知道C#容器 - Java会使用java.util.Properties
。
aerospace.props:
INDUSTRY_NAME=aerospace
INDUSTRY_START_YEAR=1903
manufacturing.props:
INDUSTRY_NAME=manufacturing
INDUSTRY_START_YEAR=1600