我的项目中有一个资源文件strings.resx,用于存储默认的英文字符串。为了测试目的,我创建了另外一个文件strings.zh-CN.resx,但存储的字符串不是真正的中文。它们只是将字符串附加到存储在strings.resx(主资源文件)中的字符串后生成的测试字符串。当用户登录到zh-CN文化时,该文件有助于捕获硬编码数据和未翻译的字符串。当当前线程文化是zh-CN时,是否有可能摆脱strings.zh-CN.resx文件并动态生成假资源?是否可以在不使用ResourceManager使用.resx文件的情况下即时创建伪资源?
基本上 - 有什么办法可以让ResourceManager在没有物理.resx文件的情况下为特定文化返回假字符串?
我正在使用Visual Studio自动生成的designer.cs文件来获取资源。我可以在designer.cs文件中看到,.resx文件中每个字符串都有一个静态属性。 ResourceManager在designer.cs中初始化的方式如下。
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("xxx.xxx.Strings", typeof(Strings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
这是通过自动生成的代码添加静态属性的方式。
/// <summary>
/// Looks up a localized string similar to Absolute.
/// </summary>
public static string Absolute {
get {
return ResourceManager.GetString("Absolute", resourceCulture);
}
}
我在查找扩展点。如果可能的话,我想钩入自己的自定义ResourceManager(或其他我不确定的东西),并在文化为zh-CN时返回假伪字符串。主要目的是为了测试目的,我不想生成一个虚假的物理资源文件。
请通过[编辑]添加其他信息到您的问题,并从评论中删除它们。 – Alex
顺便说一句,'ResourceManager'是.NET的一部分,不属于C# –