C# 行业特定资源的实施

C# 行业特定资源的实施,c#,.net,resources,localization,C#,.net,Resources,Localization,我们有一个用于某个特定行业的程序,并且有特定于该行业的字符串。我们现在的情况是,它可以在另一个行业中使用,我们希望在不复制代码库的情况下为该行业定制字符串 问题空间似乎与本地化非常相似。我们是否要为每个行业单独设置一个资源集合?如果是这样的话,我们什么时候会选择使用哪个程序集,我们是在安装时这样做,还是需要在编译时这样做?。我们如何保持独立的资源程序集同步,以便在每个程序集中显示相同的消息键 最好的方法是什么?我建议使用带有键值对的属性文件。如果当前具有特定于行业的字符串,请将其替换为对属性文件

我们有一个用于某个特定行业的程序,并且有特定于该行业的字符串。我们现在的情况是,它可以在另一个行业中使用,我们希望在不复制代码库的情况下为该行业定制字符串

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


最好的方法是什么?

我建议使用带有键值对的属性文件。如果当前具有特定于行业的字符串,请将其替换为对属性文件的调用。显然,您会将这些字符串缓存在某个容器中。我不知道C#container-Java会使用
Java.util.Properties

aerospace.props:
INDUSTRY_NAME=aerospace
INDUSTRY_START_YEAR=1903


manufacturing.props:
INDUSTRY_NAME=manufacturing
INDUSTRY_START_YEAR=1600

让我重新表述一下:你有一个工业应用程序,可以在不同的行业中使用,唯一不同的是资源(即字符串、布局,可能是图像和声音)。另一个代码保持不变

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


编辑(自我说明:仔细阅读整个问题)


不知何故,我设法错过了安装时间和编译时间。我相信编译时间是答案,因为我在配置驱动的切换部分给出了相同的原因:您将打包资源,而您将无法控制客户如何使用它。这是肯定的,一些聪明的人会找到答案。

这个答案没有解决问题ons提出,这是一个特定于.net的问题,而不是java。请删除此答案,因为它会鼓励其他人不回答已回答的问题。它确实解决了这个问题。您正在寻找如何使您的内容具有通用性,这就解决了这个问题。我发现很难相信您在C#中没有地图?如果您不知道C#,请不要回答问题。您不知道如何评论以下内容:.NET资源程序集,编译时使用与安装时使用,.NET资源程序集的同步,问题中提到了每一个。如果我们想编写自己的实现,我们可能可以使用字典,但在.NET的广泛范围内,我们可以心理状态可能已经存在。@Aran我的答案中有一个基本点你没有提到:你的问题不是C#特有的。这是一个自Fortran和早期以来一直困扰程序员的问题。一个因其有效性而一直存在的解决方案是一个属性文件。你严重地过度思考了这个问题。最优雅的解决方案是解决方案是,使用由属性文件填充的映射get的结果,而不是引用常量字符串。如果您希望满足不复制代码库的要求,则使用的任何实现都将是此的变体。我相信他的问题与.Net非常相关。无法回答他的问题在不了解.Net资源体系结构的情况下,您可能无法正确地执行此操作。恐怕您刚刚证明了这一点。