是否建议使用.resx文件在类库中存储常用字符串引用?

时间:2012-09-13 15:50:22

标签: c# three-tier

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

4 个答案:

答案 0 :(得分:3)

在您的解决方案中有一个单独项目的一个选项,它包含整个解决方案的所有resx文件。然后,您可以将其添加为业务层的参考。在Resources Project中,您可以编写.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文件。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

即。如果您的业务逻辑具有类似CreateGreatingMail(User user, CultureInfo language)的内容,那么您需要将多个面向用户的可本地化字符串放在某处,而resx是最佳位置。

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

答案 3 :(得分:0)

是的.resx file完全Presentation Layer

但您可以设置constant

const string toto = "test";