从技术上讲,是的,这是可能的,但也有一些陷阱。首先,让我给你看一个例子。假设我App_GlobalResources
文件夹看起来像这样:
/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx
每个资源文件有一个称为“后的TestString”一个条目。我使用Visual Studio菜单添加了每个资源文件,因此它为我创建了一个类。默认情况下,添加到App_GlobalResources
文件夹的所有类将具有相同的命名空间Resource
。所以,如果我想使用类生成器,并且我想在命名空间中使用Test
,那么我需要进入TestSubresource.Designer.cs文件并手动更改命名空间。一旦我这样做,我可以做到以下几点:
var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;
我也可以用GetGlobalResourceObject
引用它们:
,我仍然用“TestSubresource”为手段
var rootResource = GetGlobalResourceObject("TestResource", "TestString");
var subResource1 = GetGlobalResourceObject("TestSubresource", "TestString");
通知引用资源该文件即使在子文件夹中。现在,其中一种捕获方式是,所有文件在App_GlobalResources
的所有文件夹中必须是唯一的,否则您的项目将引发运行时错误。如果我添加一个名为“TestResource.resx”到/测试资源,它会引发以下运行时错误:
The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).
这是真实的,即使我改变对新资源的命名空间。
因此,总而言之,这是可能的,但是由于文件系统允许的App_GlobalResources
文件夹结构的不同部分中有两个名称相同的资源文件,但由于文件系统允许,导致运行时错误的可能性增加。净。