Freigeben über


StronglyTypedResourceBuilder Klasse

Definition

Bietet Unterstützung für stark typisierte Ressourcen. Diese Klasse kann nicht vererbt werden.

public ref class StronglyTypedResourceBuilder abstract sealed
public static class StronglyTypedResourceBuilder
type StronglyTypedResourceBuilder = class
Public Class StronglyTypedResourceBuilder
Vererbung
StronglyTypedResourceBuilder

Beispiele

Im folgenden Beispiel wird eine Klasse namens DemoResources generiert, die in C# oder Visual Basic geschrieben ist (abhängig vom Quellcode des Beispiels). Diese Klasse befindet sich im DemoApp Namespace und verfügt über Eigenschaften, die die Bitmap eines Logos und den Namen einer Anwendung zurückgeben. Im Beispiel wird eine CreateResourceFile Methode zum Erstellen der erforderlichen RESW-Datei aufgerufen, und es muss eine Bitmapdatei namens Logo.bmp im aktuellen Verzeichnis des Beispiels gefunden werden. Im Codebeispiel wird die folgende Ressourcendatei namens demo.resx verwendet:

using Microsoft.CSharp;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Drawing;
using System.IO;
using System.Resources;
using System.Resources.Tools;

public class Example
{
   public static void Main()
   {
      CreateResXFile();
      
      StreamWriter sw = new StreamWriter(@".\DemoResources.cs");
      string[] errors = null;
      CSharpCodeProvider provider = new CSharpCodeProvider();
      CodeCompileUnit code = StronglyTypedResourceBuilder.Create("Demo.resx", "DemoResources", 
                                                                 "DemoApp", provider, 
                                                                 false, out errors);    
      if (errors.Length > 0)
         foreach (var error in errors)
            Console.WriteLine(error); 

      provider.GenerateCodeFromCompileUnit(code, sw, new CodeGeneratorOptions());                                         
      sw.Close();
   }

   private static void CreateResXFile()
   {
      Bitmap logo = new Bitmap(@".\Logo.bmp");

      ResXResourceWriter rw = new ResXResourceWriter(@".\Demo.resx");
      rw.AddResource("Logo", logo); 
      rw.AddResource("AppTitle", "Demo Application");
      rw.Generate();
      rw.Close();
   }
}
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.Drawing
Imports System.IO
Imports System.Resources
Imports System.Resources.Tools

Module Example
   Public Sub Main()
      CreateResXFile()
      
      Dim sw As New StreamWriter(".\DemoResources.vb")
      Dim errors() As String = Nothing
      Dim provider As New VBCodeProvider()
      Dim code As CodeCompileUnit = StronglyTypedResourceBuilder.Create("Demo.resx", "DemoResources", 
                                                                        "DemoApp", provider, 
                                                                        false, errors)    
      If errors.Length > 0 Then
         For Each [error] In errors
            Console.WriteLine([error]) 
         Next
      End If
      provider.GenerateCodeFromCompileUnit(code, sw, New CodeGeneratorOptions())                                         
      sw.Close()
   End Sub
   
   Private Sub CreateResXFile()
      Dim logo As New Bitmap(".\Logo.bmp")

      Dim rw As New ResXResourceWriter(".\Demo.resx")
      rw.AddResource("Logo", logo) 
      rw.AddResource("AppTitle", "Demo Application")
      rw.Generate()
      rw.Close()
   End Sub
End Module

Ihr Anwendungscode kann dann die -Klasse wie folgt verwenden:

this.Text = DemoApp.DemoResources.AppTitle;
System.Drawing.Bitmap bmp = DemoApp.DemoResources.Logo;
Me.Text = DemoApp.DemoResources.AppTitle
Dim bmp As System.Drawing.Bitmap = DemoApp.DemoResources.Logo

Hinweise

In der Regel trennen Ressourcen Code von Inhalten innerhalb einer Anwendung. Das Erstellen und Verwenden dieser Ressourcen erleichtert die Entwicklung lokalisierbarer Anwendungen. Im .NET Framework werden Ressourcen in der Regel mithilfe der ResourceManager -Klasse genutzt, die Methoden enthält, die zur Laufzeit Zugriff auf kulturspezifische Ressourcen ermöglichen. Weitere Informationen zum Erstellen und Nutzen von Ressourcen finden Sie unter Ressourcen in Desktop-Apps.

Die Unterstützung von stark typisierten Ressourcen ist ein Feature zur Kompilierzeit, das den Zugriff auf Ressourcen kapselt, indem Klassen erstellt werden, die einen Satz statischer, schreibgeschützter Eigenschaften (get) enthalten. Dies bietet eine alternative Möglichkeit, Ressourcen zu nutzen, anstatt die ResourceManager.GetString Methoden und ResourceManager.GetObject aufzurufen.

Die grundlegende Funktionalität für die Unterstützung stark typisierter Ressourcen wird von der StronglyTypedResourceBuilder -Klasse (sowie der /str Befehlszeilenoption im Resgen.exe (Resource File Generator)) bereitgestellt. Die Ausgabe der Create -Methode ist eine Klasse, die stark typisierte Eigenschaften enthält, die den Ressourcen entsprechen, auf die im Eingabeparameter verwiesen wird. Diese Klasse bietet schreibgeschützten Zugriff auf die Ressourcen, die in der verarbeiteten Datei verfügbar sind.

Methoden

Create(IDictionary, String, String, CodeDomProvider, Boolean, String[])

Generiert eine Klassendatei mit stark typisierten Eigenschaften, die den Ressourcen entsprechen, auf die in der angegebenen Sammlung verwiesen wird.

Create(IDictionary, String, String, String, CodeDomProvider, Boolean, String[])

Generiert eine Klassendatei mit stark typisierten Eigenschaften, die den Ressourcen entsprechen, auf die in der angegebenen Sammlung verwiesen wird.

Create(String, String, String, CodeDomProvider, Boolean, String[])

Generiert eine Klassendatei mit stark typisierten Eigenschaften, die den Ressourcen in der angegebenen RESX-Datei entsprechen.

Create(String, String, String, String, CodeDomProvider, Boolean, String[])

Generiert eine Klassendatei mit stark typisierten Eigenschaften, die den Ressourcen in der angegebenen RESX-Datei entsprechen.

VerifyResourceName(String, CodeDomProvider)

Generiert auf Grundlage der angegebenen Eingabezeichenfolge und des Codeanbieters eine gültige Ressourcenzeichenfolge.

Gilt für: