ResXResourceReader.UseResXDataNodes プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の XML リソース ファイルまたは XML リソース ストリームを読み込んでいるときに、ResXDataNode オブジェクトが返されるかどうかを示す値を取得または設定します。
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
プロパティ値
リソース データ ノードが取得される場合は true
。リソース データ ノードが無視される場合は false
。
例外
設定操作では、リソース ファイルまたはリソース ストリームの列挙子は既に開かれています。
例
次の例では、XML ファイル内のリソース項目を列挙して表示します。 最初は、 が にfalse
設定され、UseResXDataNodesリソース ファイルで発生したデータ項目とメタデータ項目の両方が表示されます。 2 番目の列挙体には、 UseResXDataNodes が に true
設定されているため、リソース データ要素はオブジェクトとして ResXDataNode 返されます。
#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
この例で使用するリソース XML ファイルには、1 つのデータ ノードと 1 つのメタデータ ノードが含まれています。 前の例で XML ファイルを使用するには、次のテキストをコピーし、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>
注釈
リソースの列挙を開始する UseResXDataNodes 前に、 プロパティを設定できます。 既定では、その値は です false
。
適用対象
.NET