4

是否建议使用 .resx 文件将常见的字符串引用存储在业务层类库中?我通常只看到这些在表示层中使用过。

4

4 回答 4

3

一种选择是在您的解决方案中拥有一个单独的项目,其中包含整个解决方案的所有 resx 文件。然后,您可以将其添加为对业务层的引用。在资源项目中,您可以围绕 .net ResourceManager 类编写一个包装器,以返回您的密钥的资源值。类似的东西:

public class ResourceService : IResourceService
{
    public ResourceService() {}

    public GetResourceValue(string resourceFileName, string resourceKey)
    {
         var resourceManager = new ResourceManager("Myresources", Assembly.Load("MyResourcesProjectName"));
         return resourceManager.GetString(resourceKey);
    }
} 

然后你可以从你的业务层使用它:

var resourceService = new ResourceService();
var resourceValue = resourceService.GetResourceValue("MyResources", "ResourceKeyName");

我没有时间测试代码,我是在运行中编写的,但它应该给你一个大致的想法。IMO,将 resx 文件放在单独的项目中没有任何问题。另一种接近它的方法是在使用它们的地方有 .resx 文件。我发现单独的项目想法更好,因为这样,您可以为每种语言创建单独的文件夹,并在其中存储特定于语言环境的 .resx 文件。

于 2012-09-13T16:09:37.617 回答
2

最好尝试将用户将看到的字符串移动到表示层,但在业务层中构建一些消息的情况并不少见。如果您计划将消息翻译成多种语言/文化,那么将它们放在 resx 文件中是合适的。

于 2012-09-13T16:05:23.643 回答
2

我认为将面向用户的字符串放入任何层的 resx 文件中都没有问题。

即,如果您的业务逻辑有类似的东西CreateGreatingMail(User user, CultureInfo language),那么您将有多个面向用户的可本地化字符串,您需要将它们放在某个地方,而 resx 是最好的地方。

对于共享 UI 字符串,您可以拥有专门用于 UI 字符串的显式 UI 层组件,而不是将其合并到共享业务层中。

于 2012-09-13T16:06:28.457 回答
0

是的,Exaclty.resx file放置在 上Presentation Layer

但是你可以设置constant

const string toto = "test";
于 2012-09-13T15:55:45.300 回答