Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
ResourceManager-Klasse
Stellt zur Laufzeit benutzerfreundlichen Zugriff auf kulturabhängige Ressourcen bereit.
Assembly: mscorlib (in mscorlib.dll)
Der ResourceManager-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
ResourceManager() | Initialisiert eine neue Instanz der ResourceManager-Klasse mit Standardwerten. |
|
ResourceManager(Type) | Erstellt einen ResourceManager, der Ressourcen in Satellitenassemblys auf der Grundlage der Informationen aus dem angegebenen Type sucht. |
|
ResourceManager(String, Assembly) | Initialisiert eine neue Instanz der ResourceManager-Klasse zum Suchen von Ressourcen in Dateien mit dem angegebenen Stammnamen unter Verwendung der angegebenen Assembly. |
|
ResourceManager(String, Assembly, Type) | Initialisiert eine neue Instanz der ResourceManager-Klasse zum Suchen von Ressourcen in Dateien mit dem angegebenen Stammnamen mithilfe der angegebenen Assembly. |
| Name | Beschreibung | |
|---|---|---|
|
BaseName | Ruft den Stammnamen der Ressourcendateien ab, die der ResourceManager nach Ressourcen durchsucht. |
|
FallbackLocation | Ruft den Speicherort für das Abrufen von neutralen Fallbackressourcen ab oder legt diesen fest. |
|
IgnoreCase | Ruft einen booleschen Wert ab, der angibt, ob die aktuelle Instanz von ResourceManager die Ressourcensuche ohne Berücksichtigung der Groß- und Kleinschreibung in der GetString-Methode und der GetObject-Methode zulässt, oder legt diesen fest. |
|
ResourceSetType | Ruft den Type des ResourceSet ab, mit dem der ResourceManager ein ResourceSet-Objekt erstellt. |
| Name | Beschreibung | |
|---|---|---|
|
CreateFileBasedResourceManager | Gibt einen ResourceManager zurück, der anstelle des Assemblymanifests ein bestimmtes Verzeichnis nach Ressourcen durchsucht. |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetNeutralResourcesLanguage | Gibt die CultureInfo für die neutralen Ressourcen der Hauptassembly zurück, indem der Wert des NeutralResourcesLanguageAttribute in einer angegebenen Assembly gelesen wird. |
|
GetObject(String) | Gibt den Wert der angegebenen Object-Ressource zurück. |
|
GetObject(String, CultureInfo) | Ruft den Wert der Object-Ressource ab, die für die angegebene Kultur lokalisiert wurde. |
|
GetResourceFileName | Generiert den Ressourcendateinamen für die angegebene CultureInfo. |
|
GetResourceSet | Ruft das ResourceSet für eine bestimmte Kultur ab. |
|
GetSatelliteContractVersion | Gibt die Version zurück, die durch SatelliteContractVersionAttribute in der angegebenen Assembly festgelegt wird. |
|
GetStream(String) | Gibt ein UnmanagedMemoryStream-Objekt aus der angegebenen Ressource zurück. |
|
GetStream(String, CultureInfo) | Gibt mithilfe der angegebenen Kultur ein UnmanagedMemoryStream-Objekt aus der angegebenen Ressource zurück. |
|
GetString(String) | Gibt den Wert der angegebenen String-Ressource zurück. |
|
GetString(String, CultureInfo) | Ruft den Wert der String-Ressource ab, die für die angegebene Kultur lokalisiert wurde. |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
InternalGetResourceSet | Stellt die Implementierung zum Suchen eines ResourceSet bereit. |
|
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
ReleaseAllResources | Weist den ResourceManager an, Close für alle ResourceSet-Objekte aufzurufen und alle Ressourcen freizugeben. |
|
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
BaseNameField | Gibt den Stammnamen der Ressourcendateien an, die der ResourceManager nach Ressourcen durchsucht. |
|
HeaderVersionNumber | Ein konstanter readonly-Wert, der die Version der Ressourcendateiheader angibt, die die aktuelle Implementierung von ResourceManager interpretieren und erstellen kann. |
|
MagicNumber | Enthält die Nummer für die Bezeichnung von Ressourcendateien. |
|
MainAssembly | Gibt die Haupt-Assembly an, die die Ressourcen enthält. |
|
ResourceSets | Veraltet. Enthält eine Hashtable die eine Zuordnung von Kulturen zu ResourceSet-Objekten zurückgibt. |
Die ResourceManager-Klasse durchsucht kulturabhängige Ressourcen, stellt Ressourcenfallback bereit, wenn eine lokalisierte Ressource nicht vorhanden ist, und unterstützt das Serialisieren von Ressourcen.
Die ResourceManager-Klasse ruft Ressourcen aus binären Ressourcendateien (.resources) ab. In der Regel werden diese Ressourcendateien entweder von einem Sprachcompiler oder Assembly Linker (AL.exe) in eine Assembly eingebettet, obwohl die CreateFileBasedResourceManager-Methode es einem ResourceManager-Objekt ermöglicht, Ressourcen direkt aus einer RESOURCES-Datei, die nicht in eine Assembly eingebettet ist, abzurufen. Um eine RESOURCES-Datei aus einer Ressourcendatei entweder im Text- oder XML-Ressourcenformat (.txt bzw. .resx) zu erstellen, kompilieren Sie sie mit Resource File Generator (Resgen.exe). Für RESX-Dateien, die in einem Visual Studio-Projekt enthalten sind, behandelt Visual Studio Kompilierung als Teil des Buildprozesses automatisch.
Mit den Methoden des ResourceManager kann ein Aufrufer mit der GetObject-Methode und der GetString-Methode auf die Ressourcen für eine bestimmte Kultur zugreifen. In der Standardeinstellung geben diese Methoden die Ressource für die Kultur zurück, die durch die aktuelle Kultur des aufrufenden Threads bestimmt werden. (Weitere Informationen finden Sie im Thread.CurrentUICulture.) Aufrufer können mit der ResourceManager.GetResourceSet-Methode ein ResourceSet abrufen, das die Ressourcen für eine bestimmte Kultur darstellt und ignoriert die Fallbackregeln der Kultur. Mit dem ResourceSet können Sie dann auf die Ressourcen, die für diese Kultur lokalisiert sind, nach Namen zugreifen.
Es empfiehlt sich, Ressourcen für jede Sprache oder zumindest für eine sinnvolle Auswahl von Sprachen zu erstellen. Die Namen der Ressourcendateien entsprechen der Benennungskonvention Basisname.Kulturname.Ressourcen, wobei Basisname je nach erwünschter Genauigkeit für den Namen der Anwendung oder den Namen einer Klasse steht. Mit der Name-Eigenschaft von CultureInfo wird der Kulturname bestimmt. Eine Ressource für die neutrale Kultur, die von InvariantCulture zurückgegeben wird, muss nach dem Muster Basisname.Ressourcen benannt werden.
Angenommen, eine Assembly verfügt über mehrere Ressourcen in einer Ressourcendatei mit dem Basisnamen "MyResources". Die Namen dieser Ressourcendateien lauten z. B. "MyResources.ja-JP.resources", "MyResources.de.resources", "MyResources.zh-CHS.resources" oder "MyResources.fr-BE.resources" und enthalten jeweils die Ressourcen für Japanisch, Deutsch, Chinesisch (vereinfacht) und Französisch (Belgien). Die Standardressourcendatei sollte den Namen MyResources.resources erhalten. Die kulturspezifischen Ressourcendateien werden im Allgemeinen in Satellitenassemblys für jede einzelne Kultur gepackt. Die Standardressourcendatei muss sich in der Hauptassembly befinden.
Angenommen, es wurde ein ResourceManager erstellt, um die Ressourcen mit diesem Basisnamen darzustellen. Mit ResourceManager können Sie ein ResourceSet abrufen, das "MyResources.ja-JP.resources" durch Aufruf von GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE) kapselt. Wenn Sie wissen, dass "MyResources" die Ressource "TOOLBAR_ICON" enthält, können Sie den Wert der Ressource, die für Japan lokalisiert wurde, abrufen, indem Sie GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP")) aufrufen.
Obwohl dies für die meisten Verwendungszwecke von ResourceManager nicht erforderlich ist, sollten allgemein zugängliche Assemblys das SatelliteContractVersionAttribute verwenden, um mehrere Versionen der Hauptassembly zu unterstützen, ohne dass die Satellitenassemblys erneut bereitgestellt werden müssen, sowie das NeutralResourcesLanguageAttribute, um das Suchen einer nicht vorhandenen Satellitenassembly zu verhindern.
Weitere Informationen über die Unterstützung mehrerer Versionen von Satellitenassemblys finden Sie unter Abrufen von Ressourcen in Satellitenassemblys. Weitere Informationen über das Erstellen von Satellitenassemblys finden Sie unter Erstellen von Satellitenassemblys. Hinweise zum Lokalisieren von Windows Forms-Dialogfeldern finden Sie unter dem Winres.exe (Windows Forms Resource Editor-Tool)-Tool in Windows Software Development Kit (SDK).
Weitere Informationen über das Einrichten und Erstellen von Ressourcen finden Sie unter Ressourcen in Anwendungen.
Vorsicht
|
|---|
|
Das Verwenden eigenständiger RESOURCES-Dateien in einer ASP.NET-Anwendung unterbricht die XCOPY-Bereitstellung, da die Ressourcen gesperrt bleiben, bis sie explizit durch die ReleaseAllResources-Methode freigegeben werden. Wenn Sie Ressourcen in ASP.NET-Anwendungen bereitstellen möchten, sollten Sie die RESOURCES-Dateien in Satellitenassemblys kompilieren. |
Vorsicht
|
|---|
|
Auf als privat gekennzeichnete Ressourcen kann nur innerhalb der Assembly zugegriffen werden, in der sie sich befinden. Da die Satellitenassembly keinen Code enthält, sind die Ressourcen, die in dieser privat sind, durch keinen Mechanismus verfügbar. Daher sollten Ressourcen in Satellitenassemblys immer öffentlich sein, damit aus der Hauptassembly auf diese zugegriffen werden kann. Auf die in der Hauptassembly eingebetteten Ressourcen kann von der Hauptassembly zugegriffen werden, unabhängig davon, ob diese privat oder öffentlich sind. |
< satelliteassemblies >-Konfigurationsdateiknoten
Für ausführbare Dateien, die von einer Website bereitgestellt und ausgeführt werden (HREF-EXE-Dateien), kann die ResourceManager-Klasse eine Überprüfung auf Satellitenassemblys im Web ausführen, wodurch die Leistung der Anwendung beeinträchtigt werden kann. Sie können diese Überprüfung auf die Satellitenassemblys beschränken, die mit der Anwendung bereitgestellt wurden, wodurch das Leistungsproblem behoben wird. Erstellen Sie hierzu einen <satelliteassemblies>-Knoten in der Anwendungskonfigurationsdatei, um anzugeben, dass eine spezifische Gruppe von Kulturen für die Anwendung bereitgestellt wurde und dass die ResourceManager-Klasse keine Überprüfung auf Kulturen ausführen soll, die nicht in diesem Knoten aufgelistet sind.
Hinweis
|
|---|
|
Als Alternative ist es dem Erstellen eines <satelliteassemblies>-Knotens vorzuziehen, das ClickOnce-Bereitstellungsmanifest-Feature zu verwenden. |
Erstellen Sie einen dem folgenden Codebeispiel ähnlichen Konfigurationsdateiabschnitt:
<?xml version ="1.0"?> <configuration> <satelliteassemblies> <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken"> <culture>cultureName1</culture> <culture>cultureName2</culture> <culture>cultureName3</culture> </assembly> </satelliteassemblies> </configuration>
Führen Sie in der Konfigurationsdatei Folgendes aus:
Geben Sie einen oder mehrere <assembly>-Knoten für jede bereitgestellte Hauptassembly an, wobei das <assembly>-Knotenattribut einen vollqualifizierten Assemblynamen angibt. Geben Sie anstelle von MainAssemblyName den Namen der Hauptassembly an, und geben Sie die Attributwerte Version, PublicKeyToken und Culture an, die der Hauptassembly entsprechen.
Geben Sie für das Version-Attribut die Versionsnummer der Assembly an. Zum Beispiel könnte die erste Version der Assembly Versionsnummer 1.0.0.0 sein.
Sie können für das PublicKeyToken-Attribut "null" angeben, wenn die Assembly nicht mit einem starken Namen signiert ist, oder das öffentliche Schlüsseltoken, wenn die Assembly signiert ist.
Geben Sie für das Culture-Attribut das Schlüsselwort "neutral" an, um die Hauptassembly festzulegen, und veranlassen Sie, dass die ResourceManager-Klasse nur die in den <culture>-Knoten aufgelisteten Kulturen sucht.
Weitere Informationen zu vollqualifizierten Assemblynamen finden Sie unter Assemblynamen. Weitere Informationen zu Assemblys mit starken Namen finden Sie unter Erstellen und Verwenden von Assemblys mit starkem Namen.
Geben Sie einen oder mehrere <culture>-Knoten mit einem bestimmten Kulturnamen, z. B. "fr-FR", oder einem neutralen Kulturnamen, z. B. "fr", an.
Wenn Ressourcen für eine Assembly benötigt werden, die unter dem <satelliteassemblies>-Knoten nicht aufgeführt ist, sucht die ResourceManager-Klasse entsprechend den Standardsuchregeln nach Kulturen.
Das folgende Codebeispiel veranschaulicht die Verwendung einer expliziten Kultur. Außerdem ruft die implizite aktuelle UI Zeichenfolgenressourcen aus einer Hauptassembly und einer Satellitenassembly ab. Weitere Informationen finden Sie im Unterthema "Verzeichnispfade für Satellitenassemblys, die nicht im globalen Assemblycache installiert sind" im Thema Erstellen von Satellitenassemblys.
// This code example demonstrates the ResourceManager() // constructor and ResourceManager.GetString() method. using System; using System.Resources; using System.Reflection; using System.Threading; using System.Globalization; /* Perform the following steps to use this code example: Main assembly: 1) In a main directory, create a file named "rmc.txt" that contains the following resource strings: day=Friday year=2006 holiday="Cinco de Mayo" 2) Use the resgen.exe tool to generate the "rmc.resources" resource file from the "rmc.txt" input file. > resgen rmc.txt Satellite Assembly: 3) Create a subdirectory of the main directory and name the subdirectory "es-MX", which is the culture name of the satellite assembly. 4) Create a file named "rmc.es-MX.txt" that contains the following resource strings: day=Viernes year=2006 holiday="Cinco de Mayo" 5) Use the resgen.exe tool to generate the "rmc.es-MX.resources" resource file from the "rmc.es-MX.txt" input file. > resgen rmc.es-MX.txt 6) Use the al.exe tool to create a satellite assembly. If the base name of the application is "rmc", the satellite assembly name must be "rmc.resources.dll". Also, specify the culture, which is es-MX. > al /embed:rmc.es-MX.resources /c:es-MX /out:rmc.resources.dll 7) Assume the filename for this code example is "rmc.cs". Compile rmc.cs and embed the main assembly resource file, rmc.resources, in the executable assembly, rmc.exe: >csc /res:rmc.resources rmc.cs 8) Execute rmc.exe, which obtains and displays the embedded resource strings. */ class Sample { public static void Main() { string day; string year; string holiday; string celebrate = "{0} will occur on {1} in {2}.\n"; // Create a resource manager. The GetExecutingAssembly() method // gets rmc.exe as an Assembly object. ResourceManager rm = new ResourceManager("rmc", Assembly.GetExecutingAssembly()); // Obtain resources using the current UI culture. Console.WriteLine("Obtain resources using the current UI culture."); // Get the resource strings for the day, year, and holiday // using the current UI culture. Use those strings to // display a message. day = rm.GetString("day"); year = rm.GetString("year"); holiday = rm.GetString("holiday"); Console.WriteLine(celebrate, holiday, day, year); // Obtain the es-MX culture. CultureInfo ci = new CultureInfo("es-MX"); // Get the resource strings for the day, year, and holiday // using the specified culture. Use those strings to // display a message. // Obtain resources using the es-MX culture. Console.WriteLine("Obtain resources using the es-MX culture."); day = rm.GetString("day", ci); year = rm.GetString("year", ci); holiday = rm.GetString("holiday", ci); // --------------------------------------------------------------- // Alternatively, comment the preceding 3 code statements and // uncomment the following 4 code statements: // ---------------------------------------------------------------- // Set the current UI culture to "es-MX" (Spanish-Mexico). // Thread.CurrentThread.CurrentUICulture = ci; // Get the resource strings for the day, year, and holiday // using the current UI culture. Use those strings to // display a message. // day = rm.GetString("day"); // year = rm.GetString("year"); // holiday = rm.GetString("holiday"); // --------------------------------------------------------------- // Regardless of the alternative that you choose, display a message // using the retrieved resource strings. Console.WriteLine(celebrate, holiday, day, year); } } /* This code example produces the following results: >rmc Obtain resources using the current UI culture. "5th of May" will occur on Friday in 2006. Obtain resources using the es-MX culture. "Cinco de Mayo" will occur on Viernes in 2006. */
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Vorsicht
Hinweis