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

标签 .net asp.net resources

是否可以将一个大的 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/

相关文章:

c# - .Net 垃圾回收标记阶段和巨大的链表

c# - 修复 C# 中的 System.NullReferenceException

c# - 如何在页面之间传递值?

java - 如何从我的 jar 文件中访问资源文件夹中的文件夹?

resources - 有关 Lazarus 和/或 FPC 的活跃博客

.net - 是否可以通过 ResourceManager 检索 .NET 资源项的实际内容类型(MIME 类型)?

c# - 将 Dictionary<T> 绑定(bind)到 WPF 列表框

c# - 如果数据未按给定偏移量对齐,为什么 BitConverter.ToInt32 一次读取一个字节?

.net - 如何通过通配符模式构建 dotnet

c# - 从客户端 XXX 检测到具有潜在危险的 Request.Form 值