在业务层类库中使用.resx文件来存储常用的字符串引用是否可行?我通常只看到这些在表示层中使用。
一种选择是在您的解决方案中拥有一个单独的项目,其中包含您整个解决方案的所有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");
我没有时间测试我即兴编写的代码,但它应该给你一个大致的想法。在我的看法中,将resx文件放在单独的项目中没有任何问题。 另一种方法是将.resx文件放在使用它们的地方。我认为单独的项目思路更好,因为这样,您可以为每种语言类型创建单独的文件夹,并在其中存储特定于区域设置的.resx文件。
最好将用户可见的字符串移动到表示层,但有时需要在业务层构建一些消息。如果您计划将这些消息翻译成多种语言/文化,则适合将它们放在 resx 文件中。
我认为将用户界面字符串放入任何层的resx文件中都没有问题。
例如,如果您的业务逻辑有像CreateGreatingMail(User user,CultureInfo language)
这样的内容,则需要将多个用户界面本地化字符串放在某个地方,而resx是最好的选择。
对于共享UI字符串,您可以拥有专门用于UI字符串的显式UI层程序集,而不是将其合并到共享业务层中。
是的,确切地说,.resx文件
放置在表示层
。
但您可以设置常量
const string toto = "test";