【发布时间】:2011-07-29 14:39:27
【问题描述】:
假设您正在处理一个由数百个程序集组成的 .Net 4.0 项目,每个程序集都有自己的用于本地化的资源文件 (.resx)。本地化字符串通过 ResXFileCodeGenerator 自动生成的类从 C# 访问(创建“ResourceFile.Designer.cs”文件):string test = ResourceFile.TestString;
每个程序集都有其特有的本地化字符串,但也有所有程序集共有的字符串。您告诉自己,在“父”资源文件中包含这些“公共字符串”会很好,如果“本地”资源文件中的资源键不可用,代码将退回到该文件中。然后你说“嘿!继承可以在这里工作。”事实上,在自动生成的设计器文件中做这样的事情确实有效:
internal class ResourceFile : ParentResourceFile
也就是说,没有在ResourceFile 中定义但在ParentResourceFile 中定义的字符串仍然可以通过ResourceFile.StringInParentFile 访问。
但设计器文件头中的某些内容让您感到困扰:“对此文件的更改可能会导致错误的行为,并且如果重新生成代码将会丢失。”另外,您知道在自动生成的设计器文件中播放是不受欢迎的。所以你来到这里,你问:
- ResXFileCodeGenerator 何时生成/重新生成设计器 班级?
- 有没有办法关闭自动生成?
- 我们会有 放弃 ResXFileCodeGenerator 的优势并实现我们的 自己处理 ResourceManager?
然后你说“谢谢”。
【问题讨论】:
标签: c# inheritance resx resource-files