Technisch ja ist es möglich, aber es gibt einige Fallstricke. Lassen Sie mich zuerst ein Beispiel zeigen. Angenommen, mein App_GlobalResources
Ordner sieht so aus:
/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx
Jede Ressource-Datei hat einen einzigen Eintrag namens „Teststring“. Ich habe jede Ressourcendatei über das Visual Studio-Menü hinzugefügt, sodass eine Klasse für mich erstellt wurde. Standardmäßig haben alle Klassen, die zum Ordner App_GlobalResources
hinzugefügt wurden, denselben Namensraum wie Resource
. Also, wenn ich den Klassengenerator verwenden möchte und ich Test
im Namespace will, muss ich in die Datei TestSubresource.Designer.cs gehen und den Namespace manuell ändern. Sobald ich das tun, kann ich folgendes tun:
var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;
ich auch sie GetGlobalResourceObject
mit verweisen können:
var rootResource = GetGlobalResourceObject("TestResource", "TestString");
var subResource1 = GetGlobalResourceObject("TestSubresource", "TestString");
Beachten Sie, dass ich die „TestSubresource“ immer noch als Mittel verwenden, um die Ressourcen Bezug nimmt in Diese Datei befindet sich zwar in einem Unterordner. Nun, einer der Haken ist, dass alle Dateien in allen Ordnern in App_GlobalResources
eindeutig sein müssen oder Ihr Projekt wird einen Laufzeitfehler auslösen. Wenn ich eine Ressource mit dem Namen „TestResource.resx“ zu/Test hinzufügen, wird es die folgenden Laufzeitfehler werfen:
The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).
Dies gilt auch dann, wenn ich den Namespace auf die neue Ressource ändern.
Also, abschließend, ja, es ist möglich, aber Sie erhöhen die Chancen, einen Laufzeitfehler wegen zwei identisch benannten Ressourcen-Dateien in verschiedenen Teilen der App_GlobalResources
Ordnerstruktur, die durch das Dateisystem, aber nicht durch erlaubt ist. NETZ.