2

目前我正在尝试扩展项目的默认资源(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”。或者有人有更好的想法来完成扩展资源?

提前感谢您的任何建议和帮助。

4

0 回答 0