从技术上讲,是的,但有一些陷阱。首先,让我给你看一个例子。假设我的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 引用它们:
var rootResource = GetGlobalResourceObject( "TestResource", "TestString" );
var subResource1 = GetGlobalResourceObject( "TestSubresource", "TestString" );
请注意,我仍然使用“TestSubresource”作为引用该文件中资源的方法,即使它位于子文件夹中。现在,其中一个问题是,App_GlobalResources 中的所有文件夹中的所有文件都必须是唯一的,否则您的项目将引发运行时错误。如果我将一个名为“TestResource.resx”的资源添加到/Test,它会抛出以下运行时错误:
资源文件“/App_GlobalResources/TestResource.resx”不能
使用,因为它与另一个同名文件冲突。)。
即使我更改了新资源的命名空间也是如此。
因此,总而言之,是的,这是可能的,但是由于文件系统允许但不被文件系统允许的 App_GlobalResources 文件夹结构的不同部分中的两个同名资源文件,您增加了出现运行时错误的几率.NET。