2011-05-02 57 views
1

我们有一个在特定行业中使用的程序,并且具有特定于该行业的字符串。现在我们有了可以在其他行业使用的情况,我们希望为该行业定制字符串而不重复我们的代码库。行业特定资源的实施

问题空间与本地化看起来非常相似。我们是否要为每个行业设立单独的资源组合?如果是这样,我们什么时候会选择使用哪个程序集,我们可以在安装的时候这样做,还是需要在编译时?我们如何保持单独的资源程序集同步,以便每条消息中出现相同的消息密钥?

这样做的最好方法是什么?

回答

1

让我重新措辞:有你有一个工业应用,其能够在各个行业和唯一的东西都是不同的资源(即字符串,布局,也许图像和声音)一起使用。其他代码保持不变

在这种情况下,您的问题不仅仅是相似,它实际上与本地化相同。因此,您可以使用Satellite Assemblies
现在,如果您想单独打包创建的应用程序或将两个问题空间分配给一个应用程序,则由您决定。
对我来说第一个看起来更真实的场景 - 您需要决定在哪个.resx文件中包含编译时间(即在项目准备期间您将用问题空间资源覆盖现有资源,然后继续编译,应该给你不同的应用程序风格;我也会在这种情况下修改它们的名字)。
后者将要求您在运行时手动实例化ResourceManager以从有效的卫星程序集中读取 - 它可能基于某个配置文件。这意味着更多的工作(你需要真正修改你的代码),你最终将同时分发你的应用程序的两种风格,那就是你无法控制你的客户如何使用它。从商业角度来看,这可能有点危险。


EDIT(自我提醒:仔细阅读整个问题)

不知怎的,我设法错过安装时间与编译时间。我相信编译时间就是答案,因为我在配置驱动切换部分给出了同样的理由:您会打包资源,并且您将无法控制客户如何使用它。一些聪明的人会想出来,这是肯定的。

+0

我讨厌那个“聪明的人”:) – 2011-05-02 23:12:36

-1

我会建议有一个带有键值对的属性文件。您目前拥有行业特定字符串的位置,请使用对属性文件的调用替换它们。显然你会将这些字符串缓存在某个容器中。我不知道C#容器 - Java会使用java.util.Properties

aerospace.props: 
INDUSTRY_NAME=aerospace 
INDUSTRY_START_YEAR=1903 


manufacturing.props: 
INDUSTRY_NAME=manufacturing 
INDUSTRY_START_YEAR=1600 
+0

这个答案没有解决提出的问题,它是一个.net特定的问题,而不是java。请删除此答案,因为它鼓励其他人不回复已回答的问题。 – 2011-05-02 01:05:32

+0

它确实解决了这个问题。你正在寻找如何使你的东西是通用的,这解决了它。我发现很难相信你在C#中没有Map? – corsiKa 2011-05-02 01:25:28

+2

如果你不知道c#,请不要回答这个问题。您不具备对下列内容的评论:.NET资源程序集,在编译和安装时使用,同步。NET资源程序集,每个问题中都提到了这些。如果我们想要编写我们自己的实现,我们可能会使用字典,但在.NET的很大程度上,实现可能已经存在。 – 2011-05-02 01:36:22