Tecnicamente, sì è possibile ma ci sono alcune insidie. Per prima cosa, lascia che ti mostri un esempio. Supponiamo che la mia cartella App_GlobalResources
assomiglia così:
/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx
Ogni file risorsa ha una sola voce denominata "TestString". Ho aggiunto ogni file di risorse utilizzando il menu di Visual Studio in modo da creare una classe per me. Per impostazione predefinita, tutte le classi aggiunte alla cartella App_GlobalResources
avranno lo stesso spazio dei nomi di Resource
. Quindi, se voglio usare il generatore di classi e voglio Test
nello spazio dei nomi, ho bisogno di andare nel file TestSubresource.Designer.cs e cambiare manualmente lo spazio dei nomi. Una volta che lo faccio, posso effettuare le seguenti operazioni:
var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;
Posso anche fare riferimento utilizzando GetGlobalResourceObject
:
var rootResource = GetGlobalResourceObject("TestResource", "TestString");
var subResource1 = GetGlobalResourceObject("TestSubresource", "TestString");
Si noti che ho ancora utilizzare il "TestSubresource" come mezzo per fare riferimento le risorse quel file anche se si trova in una sottocartella. Ora, una delle catture, è che tutti i file devono essere univoci in tutte le cartelle in App_GlobalResources
o il tuo progetto genererà un errore di runtime. Se posso aggiungere una risorsa denominata "TestResource.resx" per/Test, sarà lanciare il seguente errore di runtime:
The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).
Questo è vero anche se cambio lo spazio dei nomi sulla nuova risorsa.
Quindi, in conclusione, sì, è possibile, ma si aumenta la probabilità di ottenere un errore di runtime a causa di due file di risorse con nome identico in diverse parti della struttura della cartella App_GlobalResources
consentita dal file system ma non da. NETTO.