ResXResourceReader.UseResXDataNodes Properti
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.
Mendapatkan atau mengatur nilai yang menunjukkan apakah ResXDataNode objek dikembalikan saat membaca file atau aliran sumber daya XML saat ini.
public:
property bool UseResXDataNodes { bool get(); void set(bool value); };
public bool UseResXDataNodes { get; set; }
member this.UseResXDataNodes : bool with get, set
Public Property UseResXDataNodes As Boolean
Nilai Properti
true
jika simpul data sumber daya diambil; false
jika simpul data sumber daya diabaikan.
Pengecualian
Dalam operasi yang ditetapkan, enumerator untuk file sumber daya atau aliran sudah terbuka.
Contoh
Contoh berikut menghitung dan menampilkan item sumber daya dalam file XML. Awalnya, UseResXDataNodes diatur ke false
untuk menampilkan item data dan metadata saat terjadi dalam file sumber daya. Enumerasi kedua memiliki UseResXDataNodes set ke true
sehingga elemen data sumber daya dikembalikan sebagai ResXDataNode objek.
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Resources;
using namespace System::ComponentModel::Design;
namespace UseDataNodesExample
{
public ref class Program
{
public:
static void Main()
{
Console::WriteLine("\nEnumerating as data items...");
EnumResourceItems("Resource1.resx", false);
Console::WriteLine("\nEnumerating as data nodes...");
EnumResourceItems("Resource1.resx", true);
}
static void EnumResourceItems(String^ resxFile, bool useDataNodes)
{
ResXResourceReader^ reader = gcnew ResXResourceReader(resxFile);
reader->UseResXDataNodes = useDataNodes;
// Enumerate using IEnumerable.GetEnumerator().
Console::WriteLine("\n Default enumerator:");
for each (DictionaryEntry entry in reader)
{
ShowResourceItem(entry, useDataNodes);
}
// Enumerate using GetMetadataEnumerator()
IDictionaryEnumerator^ metadataEnumerator = reader->GetMetadataEnumerator();
Console::WriteLine("\n MetadataEnumerator:");
while (metadataEnumerator->MoveNext())
{
ShowResourceItem(metadataEnumerator->Entry, useDataNodes);
}
// Enumerate using GetEnumerator()
IDictionaryEnumerator^ enumerator = reader->GetEnumerator();
Console::WriteLine("\n Enumerator:");
while (enumerator->MoveNext())
{
ShowResourceItem(enumerator->Entry, useDataNodes);
}
delete reader;
}
static void ShowResourceItem(DictionaryEntry entry, bool isDataNode)
{
// Use a nullptr type resolver.
ITypeResolutionService^ typeres = nullptr;
ResXDataNode^ dnode;
if (isDataNode)
{
// Display from node info.
dnode = (ResXDataNode^)entry.Value;
Console::WriteLine(" {0}={1}", dnode->Name, dnode->GetValue(typeres));
}
else
{
// Display as DictionaryEntry info.
Console::WriteLine(" {0}={1}", entry.Key, entry.Value);
}
}
};
}
int main()
{
UseDataNodesExample::Program::Main();
}
// The example program will have the following output:
//
// Enumerating as data items...
//
// Default enumerator:
// DataSample=Sample DATA value
//
// MetadataEnumerator:
// MetadataSample=Sample METADATA value
//
// Enumerator:
// DataSample=Sample DATA value
//
// Enumerating as data nodes...
//
// Default enumerator:
// DataSample=Sample DATA value
// MetadataSample=Sample METADATA value
//
// MetadataEnumerator:
//
// Enumerator:
// DataSample=Sample DATA value
// MetadataSample=Sample METADATA value
using System;
using System.Collections;
using System.Resources;
using System.ComponentModel.Design;
namespace UseDataNodesExample
{
public class Program
{
public static void Main()
{
Console.WriteLine("\nEnumerating as data items...");
EnumResourceItems("Resource1.resx", false);
Console.WriteLine("\nEnumerating as data nodes...");
EnumResourceItems("Resource1.resx", true);
}
public static void EnumResourceItems(string resxFile, bool useDataNodes)
{
using (ResXResourceReader reader = new ResXResourceReader(resxFile))
{
reader.UseResXDataNodes = useDataNodes;
// Enumerate using IEnumerable.GetEnumerator().
Console.WriteLine("\n Default enumerator:");
foreach (DictionaryEntry entry in reader)
{
ShowResourceItem(entry, useDataNodes);
}
// Enumerate using GetMetadataEnumerator()
IDictionaryEnumerator metadataEnumerator = reader.GetMetadataEnumerator();
Console.WriteLine("\n MetadataEnumerator:");
while (metadataEnumerator.MoveNext())
{
ShowResourceItem(metadataEnumerator.Entry, useDataNodes);
}
// Enumerate using GetEnumerator()
IDictionaryEnumerator enumerator = reader.GetEnumerator();
Console.WriteLine("\n Enumerator:");
while (enumerator.MoveNext())
{
ShowResourceItem(enumerator.Entry, useDataNodes);
}
}
}
public static void ShowResourceItem(DictionaryEntry entry, bool isDataNode)
{
// Use a null type resolver.
ITypeResolutionService typeres = null;
ResXDataNode dnode;
if (isDataNode)
{
// Display from node info.
dnode = (ResXDataNode)entry.Value;
Console.WriteLine(" {0}={1}", dnode.Name, dnode.GetValue(typeres));
}
else
{
// Display as DictionaryEntry info.
Console.WriteLine(" {0}={1}", entry.Key, entry.Value);
}
}
}
}
// The example program will have the following output:
//
// Enumerating as data items...
//
// Default enumerator:
// DataSample=Sample DATA value
//
// MetadataEnumerator:
// MetadataSample=Sample METADATA value
//
// Enumerator:
// DataSample=Sample DATA value
//
// Enumerating as data nodes...
//
// Default enumerator:
// DataSample=Sample DATA value
// MetadataSample=Sample METADATA value
//
// MetadataEnumerator:
//
// Enumerator:
// DataSample=Sample DATA value
// MetadataSample=Sample METADATA value
Imports System.Collections
Imports System.Resources
Imports System.ComponentModel.Design
Namespace UseDataNodesExample
Public Class Program
Public Shared Sub Main()
Console.WriteLine(Environment.NewLine + "Enumerating as data items...")
EnumResourceItems("Resource1.resx", False)
Console.WriteLine(Environment.NewLine + "Enumerating as data nodes...")
EnumResourceItems("Resource1.resx", True)
End Sub
Public Shared Sub EnumResourceItems(resxFile As String, useDataNodes As Boolean)
Using reader As New ResXResourceReader(resxFile)
reader.UseResXDataNodes = useDataNodes
' Enumerate using IEnumerable.GetEnumerator().
Console.WriteLine(Environment.NewLine + " Default enumerator:")
For Each entry As DictionaryEntry In reader
ShowResourceItem(entry, useDataNodes)
Next entry
' Enumerate using GetMetadataEnumerator()
Dim metadataEnumerator As IDictionaryEnumerator = reader.GetMetadataEnumerator()
Console.WriteLine(Environment.NewLine + " MetadataEnumerator:")
While metadataEnumerator.MoveNext()
ShowResourceItem(metadataEnumerator.Entry, useDataNodes)
End While
' Enumerate using GetEnumerator()
Dim enumerator As IDictionaryEnumerator = reader.GetEnumerator()
Console.WriteLine(Environment.NewLine + " Enumerator:")
While enumerator.MoveNext()
ShowResourceItem(enumerator.Entry, useDataNodes)
End While
End Using
End Sub
Public Shared Sub ShowResourceItem(entry As DictionaryEntry, isDataNode As Boolean)
' Use a Nothing type resolver.
Dim typeres As ITypeResolutionService = Nothing
Dim dnode As ResXDataNode
If isDataNode Then
' Display from node info.
dnode = CType(entry.Value, ResXDataNode)
Console.WriteLine(" {0}={1}", dnode.Name, dnode.GetValue(typeres))
Else
' Display as DictionaryEntry info.
Console.WriteLine(" {0}={1}", entry.Key, entry.Value)
End If
End Sub
End Class
End Namespace
' The example program will have the following output:
'
' Enumerating as data items...
'
' Default enumerator:
' DataSample=Sample DATA value
'
' MetadataEnumerator:
' MetadataSample=Sample METADATA value
'
' Enumerator:
' DataSample=Sample DATA value
'
' Enumerating as data nodes...
'
' Default enumerator:
' DataSample=Sample DATA value
' MetadataSample=Sample METADATA value
'
' MetadataEnumerator:
'
' Enumerator:
' DataSample=Sample DATA value
' MetadataSample=Sample METADATA value
File XML sumber daya yang digunakan oleh contoh berisi satu simpul data dan satu simpul metadata. Untuk menggunakan file XML dengan contoh sebelumnya, salin teks berikut dan simpan ke file bernama Resource1.resx.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="DataSample" xml:space="preserve">
<value>Sample DATA value</value>
</data>
<metadata name="MetadataSample">
<value>Sample METADATA value</value>
</metadata>
</root>
Keterangan
Anda dapat mengatur UseResXDataNodes properti sebelum mulai menghitung sumber daya. Secara default, nilainya adalah false
.