建议使用.resx文件在业务层类库中存储常用字符串引用吗?我通常只看到这些在表示层中使用过。
答案 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";