目前我正在尝试扩展项目的默认资源(resx)。同时,有必要使其可用于其他项目。所以我脑子里有泛型,现在我不确定我的想法是否可行。
好吧,让我们解释一下。
DB 和 Resx 作为后备
第一个任务是为 DB 和 resx 创建一个后备机制。背后的想法是这样的情况,它可以在 DB 中进行翻译,但不一定。
这是由自定义 ResourceManager(带有自定义 ResourceReader 和 ResourceSet)制作的,并将其放在自己的类中。这没什么大不了的。
自定义 ResourceManager 和 DesignTime 功能
第二个任务是使 resx 的字段可用。我通过将 Resx 作为基础来实现这一点
internal class FallbackResource : ResxResource
{
private static global::System.Resources.ResourceManager resourceMan;
public static global::System.Resources.ResourceManager ResourceManager
{
get
{
if (resourceMan == null)
{
resourceMan = new CustomResourceManager();
}
return resourceMan;
}
}
}
有了这个,我能够创建一个“FallbackResource”-Class,可以访问以下字段
... FallbackResource.AFieldwithingApp ...
所以呢?
好吧,我可以使用 CustomResourceManager 并在每个新项目中实现“FallbackResource”-Class ...是的,你是对的:那不是方式。
所以我认为应该可以创建一个通用的“FallbackResource”(将是第一次创建一个自己的泛型):
var fallbackResource = new GenericFallback<ProjectResxFile>;
... fallbackResource.AFieldofCurrentProject ...
在我的研究过程中(我对泛型还有些陌生),我觉得我的想法是不可能的。我可以使用类引用,但我不能使用引用作为基础来创建“直接字段访问”功能。
我的结论是错的还是我错过了什么?
否则,我似乎不得不考虑编写一个扩展的“ResXFileCodeGenerator”。或者有人有更好的想法来完成扩展资源?
提前感谢您的任何建议和帮助。