如何覆盖默认System.Resources.ResourceManager在Resources.Designer.cs? [英] How to override default System.Resources.ResourceManager in Resources.Designer.cs?
问题描述
我想从 Resources.Designer.cs
覆盖 System.Resources.ResourceManager
文件来实现自定义的ResourceManager。 GetString的(...)方法的功能。这可能吗?
I want to override System.Resources.ResourceManager
from Resources.Designer.cs
file to achieve custom ResourceManager.GetString(...) method functionality. Is this possible?
推荐答案
我相信你问两个不同的问题在这里。你当然可以覆盖 ResourceManager.GetString
。你可以没有,但是,使用覆盖在自动生成的 Resource.Designer.cs
代码。要使用它,你必须写自己的资源
设计器类。
I believe you're asking two separate questions here. You can certainly override ResourceManager.GetString
. You can't, however, use that override in the auto-generated Resource.Designer.cs
code. To use it, you'll have to write your own Resource
designer class.
public class MyResourceManager : System.Resources.ResourceManager
{
// override
public override GetString(string name)
{
// custom code
}
}
public class MyResourceDesigner
{
// use your custom class with override
private static MyResourceManager resourceManager;
private static CultureInfo resourceCulture;
public static MyResourceManager ResourceManager
{
if (object.ReferenceEquals(resourceManager, null))
{
// Resource is just the name of the .resx file
// be sure to include relevant namespaces
var temp = new MyResourceManager(
"MyProject.Resource",
typeof(MyResourceDesigner).Assembly);
resourceManager = temp;
}
return resourceManager;
}
public static CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
// start adding strongly-typed objects
public static string Foo
{
get
{
// use your override
return ResourceManager.GetString("Foo", resourceCulture);
}
}
}
这篇关于如何覆盖默认System.Resources.ResourceManager在Resources.Designer.cs?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!