ResXResourceReader.UseResXDataNodes Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která určuje, zda ResXDataNode objekty jsou vráceny při čtení aktuálního souboru prostředků XML nebo datového proudu.
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
Hodnota vlastnosti
true pokud jsou načteny uzly dat prostředků; false pokud jsou uzly dat prostředků ignorovány.
Výjimky
V operaci sady je enumerátor pro soubor prostředků nebo datový proud již otevřen.
Příklady
Následující příklad vytvoří výčet a zobrazí položky prostředků v souboru XML. Zpočátku je nastavená tak, aby false zobrazovala jak data, UseResXDataNodes tak položky metadat, ke kterým dochází v souboru prostředků. Druhý výčet má nastavenou UseResXDataNodes hodnotu true tak, aby datové prvky prostředků byly vráceny jako ResXDataNode objekty.
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
Soubor XML prostředku používaný v příkladu obsahuje jeden datový uzel a jeden uzel metadat. Pokud chcete použít soubor XML s předchozím příkladem, zkopírujte následující text a uložte ho do souboru s názvem 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>
Poznámky
Vlastnost můžete nastavit UseResXDataNodes před zahájením vytváření výčtu prostředků. Ve výchozím nastavení je falsejeho hodnota .