ResXFileCodeGenerator - 覆盖输出(想要使用自定义 ResourceManager)

col*_*mde 2 c# resx visual-studio

我创建了一个继承自 ResourceManager 的类。我的问题是,如果我更改 Resources.Designer.cs 以使用它,

例如

private static global::System.Resources.ResourceManager _resourceManager;
Run Code Online (Sandbox Code Playgroud)

private static global::MyProject.Resources.MyResourceManager _resourceManager;
Run Code Online (Sandbox Code Playgroud)

它被 ResXFileCodeGenerator 覆盖并设置回默认System.Resources.ResourceManager.

我不想关闭 ResXFileCodeGenerator。但是有没有办法告诉它ResourceManager使用哪个类?

我被告知要查看 ResXFileCodeGeneratorEx,但真的看不出这在这方面有何不同。

Jam*_*all 6

有点迟,但使用反射你可以解决这个问题。我将此代码放在 Startup.cs 文件中。

var innerField = typeof(Resources.Resources).GetField("resourceMan",
    BindingFlags.NonPublic | BindingFlags.Static);

if (innerField != null)
{
    innerField.SetValue(null,
        new ExtendedResourceManager("MyNamespace.ResourceFileWithoutResx",
            typeof(Resources.Resources).Assembly));
}
Run Code Online (Sandbox Code Playgroud)

因为设计器生成的文件是有目共睹的,只需修改我基于 ResourceManager { get; 编写的代码即可。为您生成的代码。

您可以创建自己的 ExtendedResourceManager 类并根据需要覆盖所有属性。

快乐编码。