ResXResourceReader Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menghitung file dan aliran sumber daya XML (.resx), dan membaca nama sumber daya berurutan dan pasangan nilai.
public ref class ResXResourceReader : System::Resources::IResourceReader
public ref class ResXResourceReader : IDisposable, System::Collections::IEnumerable, System::Resources::IResourceReader
public class ResXResourceReader : System.Resources.IResourceReader
public class ResXResourceReader : IDisposable, System.Collections.IEnumerable, System.Resources.IResourceReader
type ResXResourceReader = class
interface IResourceReader
interface IEnumerable
interface IDisposable
Public Class ResXResourceReader
Implements IResourceReader
Public Class ResXResourceReader
Implements IDisposable, IEnumerable, IResourceReader
- Warisan
-
ResXResourceReader
- Penerapan
Contoh
Contoh berikut menunjukkan cara menggunakan ResXResourceReader untuk melakukan iterasi melalui sumber daya dalam file .resx. Pertama, ResXResourceReaderrsxr
dibuat untuk file items.resx
. Selanjutnya, GetEnumerator metode ini digunakan untuk membuat untuk melakukan iterasi IDictionaryEnumerator melalui sumber daya dan menampilkan konten ke konsol.
#using <system.windows.forms.dll>
#using <System.dll>
using namespace System;
using namespace System::Resources;
using namespace System::Collections;
void main()
{
// Create a ResXResourceReader for the file items.resx.
ResXResourceReader^ rsxr = gcnew ResXResourceReader( "items.resx" );
// Iterate through the resources and display the contents to the console.
IEnumerator^ myEnum = rsxr->GetEnumerator();
while ( myEnum->MoveNext() )
{
DictionaryEntry^ d = safe_cast<DictionaryEntry^>(myEnum->Current);
Console::WriteLine( "{0}:\t {1}", d->Key, d->Value );
}
//Close the reader.
rsxr->Close();
}
using System;
using System.Resources;
using System.Collections;
class ReadResXResources
{
public static void Main()
{
// Create a ResXResourceReader for the file items.resx.
ResXResourceReader rsxr = new ResXResourceReader("items.resx");
// Iterate through the resources and display the contents to the console.
foreach (DictionaryEntry d in rsxr)
{
Console.WriteLine(d.Key.ToString() + ":\t" + d.Value.ToString());
}
//Close the reader.
rsxr.Close();
}
}
Imports System.Resources
Imports System.Collections
Class ReadResXResources
Public Shared Sub Main()
' Create a ResXResourceReader for the file items.resx.
Dim rsxr As ResXResourceReader
rsxr = New ResXResourceReader("items.resx")
' Iterate through the resources and display the contents to the console.
Dim d As DictionaryEntry
For Each d In rsxr
Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString())
Next d
'Close the reader.
rsxr.Close()
End Sub
End Class
Keterangan
Penting
Metode panggilan dari kelas ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode dari kelas ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.
Kelas ResXResourceReader menyediakan implementasi IResourceReader default antarmuka yang membaca informasi sumber daya dalam format XML. Untuk membaca informasi sumber daya dari format sumber daya biner, gunakan ResourceReader kelas .
Anda menggunakan ResXResourceReader kelas untuk menghitung sumber daya dalam file .resx dengan melintasi enumerator kamus (IDictionaryEnumerator) yang dikembalikan oleh GetEnumerator metode . Anda memanggil metode yang disediakan oleh IDictionaryEnumerator untuk melanjutkan ke sumber daya berikutnya dan membaca nama dan nilai setiap sumber daya dalam file .resx.
Catatan
Kelas ini ResXResourceReader menyediakan dua enumerator. Metode ResXResourceReader.GetEnumerator mengembalikan IDictionaryEnumerator objek; kami sarankan Anda menggunakan metode ini untuk menghitung sumber daya. Metode ResXResourceReader.IEnumerable.GetEnumerator ini adalah implementasi antarmuka eksplisit yang mengembalikan IEnumerator objek; kami tidak merekomendasikan penggunaannya.
Contoh berikut menggunakan GetEnumerator metode untuk mendapatkan IDictionaryEnumerator objek yang digunakan untuk menghitung sumber daya dalam file .resx. Contohnya mencakup CreateResourceFile
rutinitas yang membuat file sumber daya yang diperlukan.
using System;
using System.Collections;
using System.Resources;
public class Example
{
private const string resxFilename = @".\CountryHeaders.resx";
public static void Main()
{
// Create a resource file to read.
CreateResourceFile();
// Enumerate the resources in the file.
ResXResourceReader rr = new ResXResourceReader(resxFilename);
IDictionaryEnumerator dict = rr.GetEnumerator();
while (dict.MoveNext())
Console.WriteLine("{0}: {1}", dict.Key, dict.Value);
}
private static void CreateResourceFile()
{
ResXResourceWriter rw = new ResXResourceWriter(resxFilename);
string[] resNames = {"Country", "Population", "Area",
"Capital", "LCity" };
string[] columnHeaders = { "Country Name", "Population (2010}",
"Area", "Capital", "Largest City" };
string[] comments = { "The localized country name", "",
"The area in square miles", "",
"The largest city based on 2010 data" };
rw.AddResource("Title", "Country Information");
rw.AddResource("nColumns", resNames.Length);
for (int ctr = 0; ctr < resNames.Length; ctr++) {
ResXDataNode node = new ResXDataNode(resNames[ctr], columnHeaders[ctr]);
node.Comment = comments[ctr];
rw.AddResource(node);
}
rw.Generate();
rw.Close();
}
}
// The example displays the following output:
// Title: Country Information
// nColumns: 5
// Country: Country Name
// Population: Population (2010}
// Area: Area
// Capital: Capital
// LCity: Largest City
Imports System.Collections
Imports System.Resources
Module Example
Private Const resxFilename As String = ".\CountryHeaders.resx"
Public Sub Main()
' Create a resource file to read.
CreateResourceFile()
' Enumerate the resources in the file.
Dim rr As New ResXResourceReader(resxFilename)
Dim dict As IDictionaryEnumerator = rr.GetEnumerator()
Do While dict.MoveNext()
Console.WriteLine("{0}: {1}", dict.Key, dict.Value)
Loop
End Sub
Private Sub CreateResourceFile()
Dim rw As New ResxResourceWriter(resxFilename)
Dim resNames() As String = {"Country", "Population", "Area",
"Capital", "LCity" }
Dim columnHeaders() As String = { "Country Name", "Population (2010}",
"Area", "Capital", "Largest City" }
Dim comments() As String = { "The localized country name", "",
"The area in square miles", "",
"The largest city based on 2010 data" }
rw.AddResource("Title", "Country Information")
rw.AddResource("nColumns", resNames.Length)
For ctr As Integer = 0 To resNames.Length - 1
Dim node As New ResXDataNode(resNames(ctr), columnHeaders(ctr))
node.Comment = comments(ctr)
rw.AddResource(node)
Next
rw.Generate()
rw.Close()
End Sub
End Module
' The example displays the following output:
' Title: Country Information
' nColumns: 5
' Country: Country Name
' Population: Population (2010}
' Area: Area
' Capital: Capital
' LCity: Largest City
UseResXDataNodes Jika properti adalah true
, nilai IDictionaryEnumerator.Value properti adalah ResXDataNode objek daripada nilai sumber daya. Ini membuat komentar item sumber daya tersedia dari ResXDataNode.Comment properti . Contoh berikut mengatur UseResXDataNodes properti ke true
dan menghitung sumber daya dalam file .resx,
using System;
using System.Collections;
using System.ComponentModel.Design;
using System.Resources;
public class Example
{
private const string resxFilename = @".\CountryHeaders.resx";
public static void Main()
{
// Create a resource file to read.
CreateResourceFile();
// Enumerate the resources in the file.
ResXResourceReader rr = new ResXResourceReader(resxFilename);
rr.UseResXDataNodes = true;
IDictionaryEnumerator dict = rr.GetEnumerator();
while (dict.MoveNext()) {
ResXDataNode node = (ResXDataNode) dict.Value;
Console.WriteLine("{0,-20} {1,-20} {2}",
node.Name + ":",
node.GetValue((ITypeResolutionService) null),
! String.IsNullOrEmpty(node.Comment) ? "// " + node.Comment : "");
}
}
private static void CreateResourceFile()
{
ResXResourceWriter rw = new ResXResourceWriter(resxFilename);
string[] resNames = {"Country", "Population", "Area",
"Capital", "LCity" };
string[] columnHeaders = { "Country Name", "Population (2010}",
"Area", "Capital", "Largest City" };
string[] comments = { "The localized country name", "",
"The area in square miles", "",
"The largest city based on 2010 data" };
rw.AddResource("Title", "Country Information");
rw.AddResource("nColumns", resNames.Length);
for (int ctr = 0; ctr < resNames.Length; ctr++) {
ResXDataNode node = new ResXDataNode(resNames[ctr], columnHeaders[ctr]);
node.Comment = comments[ctr];
rw.AddResource(node);
}
rw.Generate();
rw.Close();
}
}
// The example displays the following output:
// Title: Country Information
// nColumns: 5
// Country: Country Name // The localized country name
// Population: Population (2010}
// Area: Area // The area in square miles
// Capital: Capital
// LCity: Largest City // The largest city based on 2010 data
Imports System.Collections
Imports System.ComponentModel.Design
Imports System.Resources
Module Example
Private Const resxFilename As String = ".\CountryHeaders.resx"
Public Sub Main()
' Create a resource file to read.
CreateResourceFile()
' Enumerate the resources in the file.
Dim rr As New ResXResourceReader(resxFilename)
rr.UseResXDataNodes = True
Dim dict As IDictionaryEnumerator = rr.GetEnumerator()
Do While dict.MoveNext()
Dim node As ResXDataNode = DirectCast(dict.Value, ResXDataNode)
Console.WriteLine("{0,-20} {1,-20} {2}",
node.Name + ":",
node.GetValue(CType(Nothing, ITypeResolutionService)),
If(Not String.IsNullOrEmpty(node.Comment), "// " + node.Comment, ""))
Loop
End Sub
Private Sub CreateResourceFile()
Dim rw As New ResxResourceWriter(resxFilename)
Dim resNames() As String = {"Country", "Population", "Area",
"Capital", "LCity" }
Dim columnHeaders() As String = { "Country Name", "Population (2010}",
"Area", "Capital", "Largest City" }
Dim comments() As String = { "The localized country name", "",
"The area in square miles", "",
"The largest city based on 2010 data" }
rw.AddResource("Title", "Country Information")
rw.AddResource("nColumns", resNames.Length)
For ctr As Integer = 0 To resNames.Length - 1
Dim node As New ResXDataNode(resNames(ctr), columnHeaders(ctr))
node.Comment = comments(ctr)
rw.AddResource(node)
Next
rw.Generate()
rw.Close()
End Sub
End Module
' The example displays the following output:
' Title: Country Information
' nColumns: 5
' Country: Country Name // The localized country name
' Population: Population (2010}
' Area: Area // The area in square miles
' Capital: Capital
' LCity: Largest City // The largest city based on 2010 data
Jika UseResXDataNodes adalah true
, ResXDataNode item dalam enumerasi dapat berupa:
Sumber daya bernama bersama dengan data mereka. Dalam hal ini, ResXDataNode.FileRef properti adalah
null
.Sumber daya bernama bersama dengan nama file yang berisi data sumber daya. Dalam hal ini, ResXDataNode.FileRef properti mengembalikan ResXFileRef objek yang menyediakan informasi tentang sumber daya, termasuk nama filenya. Jika nama file relatif digunakan, Anda harus selalu mengatur BasePath properti untuk menyediakan titik referensi untuk jalur file relatif.
Jika Anda ingin mengambil sumber daya bernama dari file .resx daripada menghitung sumber dayanya, Anda dapat membuat instans ResXResourceSet objek dan memanggil metode dan GetObject
.GetString
Catatan
Kelas ResXResourceReader berisi permintaan tautan dan permintaan warisan di tingkat kelas yang berlaku untuk semua anggota. SecurityException Pengecualian dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin kepercayaan penuh.
Konstruktor
ResXResourceReader(Stream) |
Menginisialisasi instans ResXResourceReader baru kelas untuk aliran yang ditentukan. |
ResXResourceReader(Stream, AssemblyName[]) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan aliran dan array nama rakitan. |
ResXResourceReader(Stream, ITypeResolutionService) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan aliran input dan layanan resolusi jenis. |
ResXResourceReader(String) |
Menginisialisasi instans ResXResourceReader baru kelas untuk file sumber daya yang ditentukan. |
ResXResourceReader(String, AssemblyName[]) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan nama file sumber daya XML dan array nama rakitan. |
ResXResourceReader(String, ITypeResolutionService) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan nama file dan layanan resolusi jenis. |
ResXResourceReader(TextReader) |
Menginisialisasi instans ResXResourceReader baru kelas untuk yang ditentukan TextReader. |
ResXResourceReader(TextReader, AssemblyName[]) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan TextReader objek dan array nama rakitan. |
ResXResourceReader(TextReader, ITypeResolutionService) |
Menginisialisasi instans ResXResourceReader baru kelas menggunakan pembaca aliran teks dan layanan resolusi jenis. |
Properti
BasePath |
Mendapatkan atau mengatur jalur dasar untuk jalur file relatif yang ditentukan dalam ResXFileRef objek. |
UseResXDataNodes |
Mendapatkan atau mengatur nilai yang menunjukkan apakah ResXDataNode objek dikembalikan saat membaca file atau aliran sumber daya XML saat ini. |
Metode
Close() |
Merilis semua sumber daya yang ResXResourceReaderdigunakan oleh . |
Dispose(Boolean) |
Merilis sumber daya tidak terkelola yang ResXResourceReader digunakan oleh dan secara opsional merilis sumber daya terkelola. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Finalize() |
Anggota ini mengambil alih Finalize() metode . |
FromFileContents(String) |
Membuat objek baru ResXResourceReader dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML. |
FromFileContents(String, AssemblyName[]) |
Membuat objek baru ResXResourceReader dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML, dan untuk menggunakan array AssemblyName objek untuk mengatasi nama jenis yang ditentukan dalam sumber daya. |
FromFileContents(String, ITypeResolutionService) |
Membuat objek baru ResXResourceReader dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML, dan untuk menggunakan ITypeResolutionService objek untuk mengatasi nama jenis yang ditentukan dalam sumber daya. |
GetEnumerator() |
Mengembalikan enumerator untuk objek saat ini ResXResourceReader . |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetMetadataEnumerator() |
Menyediakan enumerator kamus yang dapat mengambil properti waktu desain dari file atau aliran sumber daya XML saat ini. |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
IDisposable.Dispose() |
Merilis sumber daya tidak terkelola yang ResXResourceReader digunakan oleh dan secara opsional merilis sumber daya terkelola. Untuk deskripsi anggota ini, lihat Dispose() metode . |
IEnumerable.GetEnumerator() |
Mengembalikan enumerator untuk objek saat ini ResXResourceReader . Untuk deskripsi anggota ini, lihat GetEnumerator() metode . |
Metode Ekstensi
Cast<TResult>(IEnumerable) |
Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan. |
OfType<TResult>(IEnumerable) |
Memfilter elemen berdasarkan IEnumerable jenis tertentu. |
AsParallel(IEnumerable) |
Mengaktifkan paralelisasi kueri. |
AsQueryable(IEnumerable) |
Mengonversi menjadi IEnumerableIQueryable. |
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk