gpt4 book ai didi

.net - 将大型资源文件物理拆分为多个文件,而编译器将其视为一个文件

转载 作者:行者123 更新时间:2023-12-04 15:47:57 26 4
gpt4 key购买 nike

是否可以将一个大的 Resource(.resx) 文件物理拆分为多个文件,并且仍然使用相同的语法来获取数据

IE。

全局资源.resx

进入

GlobalResource1.resx, GlobalResource2.resx, GlobalResource3.resx, ...

并且所有文件将被编译成一个并使用

Resources.GlobalResource.errParamNameReq

在 Asp.net 3.5 中使用它。在 svn 上工作时遇到问题,每次尝试 checkin 时都会发生冲突,所以我想将它拆分为多个文件,而编译器将其视为一个文件。

最佳答案

每个资源文件都有一个代码隐藏文件,用于将资源项声明为静态属性。此外,许多自动化代码生成被工具用作 Visual Studio,以在 xml/资源编辑器数据和代码隐藏文件之间进行同步。将资源拆分为多个文件可能是可能的,但稍后自动生成代码的影响可能会导致比简单合并更改更多的问题。一种可能的解决方案是创建不同的资源文件。然后有一个类保存 ResourceManager 的集合每个资源管理器的实例。像这样的东西:

    public class ResourceWrapper
{
private ICollection<ResourceManager> resourceManagers;

public ResourceWrapper(IEnumerable<ResourceManager> managers)
{
resourceManagers = new List<ResourceManager>(managers);
}

public string GetString(string key)
{
foreach (var resourceManager in resourceManagers)
{
string res = resourceManager.GetString(key);
if (res != null)
{
return res;
}
}
return null;
}
public string GetString(string key, CultureInfo culture)
{
foreach (var resourceManager in resourceManagers)
{
string res = resourceManager.GetString(key, culture);
if (res != null)
{
return res;
}
}
return null;
}
}

您只需要获取所有资源并将它们传递给构造函数。您可能希望在创建包装器实例后保留它,以避免为每个资源文件创建资源管理器 - 静态文件即可。上述代码的唯一问题是不能保证 2 个或更多资源文件定义相同的键。如果发生这种情况,代码将仅返回第一个匹配项。

关于.net - 将大型资源文件物理拆分为多个文件,而编译器将其视为一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com