IHierarchyData インターフェイス
アセンブリ: System.Web (system.web.dll 内)


IHierarchyData インターフェイスは、階層構造のノードを表し、その親ノードと子ノードとの階層関係を追跡するクラスによって実装されます。IHierarchyData インターフェイスを実装するクラスは、IHierarchicalEnumerable インターフェイスを実装するコレクションに格納できます。

FileSystemInfo オブジェクトをラップするクラスで IHierarchyData インターフェイスを実装する方法を次のコード例に示します。FileSystemInfo クラスは、IHierarchyData インターフェイスが ASP.NET 階層データ ソース コントロールに対して表す階層データ ノードの良い例です。このコード例は、HierarchicalDataSourceControl クラスのトピックで取り上げているコード例の一部分です。
Public Class FileSystemHierarchyData Implements IHierarchyData Public Sub New(obj As FileSystemInfo) fileSystemObject = obj End Sub 'New Private fileSystemObject As FileSystemInfo = Nothing Public Overrides Function ToString() As String Return fileSystemObject.Name End Function 'ToString ' IHierarchyData implementation. Public Overridable ReadOnly Property HasChildren() As Boolean _ Implements IHierarchyData.HasChildren Get If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then Dim temp As DirectoryInfo = CType(fileSystemObject, DirectoryInfo) Return temp.GetFileSystemInfos().Length > 0 Else Return False End If End Get ' DirectoryInfo returns the OriginalPath, while FileInfo returns ' a fully qualified path. Public Overridable ReadOnly Property Path() As String _ Implements IHierarchyData.Path Get Return fileSystemObject.ToString() End Get End Property Public Overridable ReadOnly Property Item() As Object _ Implements IHierarchyData.Item Get Return fileSystemObject End Get End Property Public Overridable ReadOnly Property Type() As String _ Implements IHierarchyData.Type Get Return "FileSystemData" End Get End Property Public Overridable Function GetChildren() As IHierarchicalEnumerable _ Implements IHierarchyData.GetChildren Dim children As New FileSystemHierarchicalEnumerable() If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then Dim temp As DirectoryInfo = CType(fileSystemObject, DirectoryInfo) Dim fsi As FileSystemInfo For Each fsi In temp.GetFileSystemInfos() children.Add(New FileSystemHierarchyData(fsi)) Next fsi End If Return children End Function 'GetChildren Public Overridable Function GetParent() As IHierarchyData _ Implements IHierarchyData.GetParent Dim parentContainer As New FileSystemHierarchicalEnumerable() If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then Dim temp As DirectoryInfo = CType(fileSystemObject, DirectoryInfo) Return New FileSystemHierarchyData(temp.Parent) ElseIf GetType(FileInfo) Is fileSystemObject.GetType() Then Dim temp As FileInfo = CType(fileSystemObject, FileInfo) Return New FileSystemHierarchyData(temp.Directory) End If ' If FileSystemObj is any other kind of FileSystemInfo, ignore it. Return Nothing End Function 'GetParent End Class 'FileSystemHierarchyData
public class FileSystemHierarchyData : IHierarchyData { public FileSystemHierarchyData (FileSystemInfo obj) { fileSystemObject = obj; } private FileSystemInfo fileSystemObject = null; public override string ToString() { return fileSystemObject.Name; } // IHierarchyData implementation. public bool HasChildren { get { if (typeof(DirectoryInfo) == fileSystemObject.GetType() ) { DirectoryInfo temp = (DirectoryInfo) fileSystemObject; return (temp.GetFileSystemInfos().Length > 0); } else return false; } } // DirectoryInfo returns the OriginalPath, while FileInfo returns // a fully qualified path. public string Path { get { return fileSystemObject.ToString(); } } public object Item { get { return fileSystemObject; } } public string Type { get { return "FileSystemData"; } } public IHierarchicalEnumerable GetChildren() { FileSystemHierarchicalEnumerable children = new FileSystemHierarchicalEnumerable(); if (typeof(DirectoryInfo) == fileSystemObject.GetType()) { DirectoryInfo temp = (DirectoryInfo)fileSystemObject; foreach (FileSystemInfo fsi in temp.GetFileSystemInfos()) { children.Add(new FileSystemHierarchyData(fsi)); } } return children; } public IHierarchyData GetParent() { FileSystemHierarchicalEnumerable parentContainer = new FileSystemHierarchicalEnumerable(); if (typeof(DirectoryInfo) == fileSystemObject.GetType()) { DirectoryInfo temp = (DirectoryInfo)fileSystemObject; return new FileSystemHierarchyData(temp.Parent); } else if (typeof(FileInfo) == fileSystemObject.GetType()) { FileInfo temp = (FileInfo)fileSystemObject; return new FileSystemHierarchyData(temp.Directory); } // If FileSystemObj is any other kind of FileSystemInfo, ignore it. return null; } }
IHierarchicalEnumerable コレクションを再帰的に反復処理し、GetHierarchyData メソッドを使用して IHierarchyData 項目を列挙体から抽出し、そのデータ項目に対して基本操作を実行する方法を次のコード例に示します。
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="ihd_1.aspx.vb" Inherits="ihd_1_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ihd_1.aspx.cs" Inherits="ihd_1_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
<%@ Page Language="VJ#"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <SCRIPT runat="server"> private void Page_Load(Object sender, System.EventArgs e) { IHierarchicalEnumerable ihe = (IHierarchicalEnumerable)SiteMap.get_RootNode().get_ChildNodes(); IEnumerator enumeration = ihe.GetEnumerator(); while (enumeration.MoveNext()) { // Print out SiteMapNode Titles. IHierarchyData hierarchicalNode = ihe.GetHierarchyData(enumeration.get_Current()); PrintFullChildNodeInfo(hierarchicalNode); } }//Page_Load // Print out the the current data node, then iterate through its // children and do the same. private void PrintFullChildNodeInfo(IHierarchyData node) { String whitespace = " "; String br = "<BR>"; get_Response().Write(node.toString() + br); get_Response().Write(whitespace + node.get_Path() + br); // Check for specific types and perform extended functions. if (node.get_Type().Equals("SiteMapNode")) { // Because SiteMapNode implements the IHierarchyData interface , // the IHierarchyData object can be cast directly as a SiteMapNode , // rather than accessing the Item property for the object that // the Type property identifies. SiteMapNode siteNode = null; siteNode = (SiteMapNode)node.get_Item(); get_Response().Write(whitespace + siteNode.get_Url() + br); get_Response().Write(whitespace + siteNode.get_Description() + br); } else { if (node.get_Type().Equals("SomeBusinessObject")) { // If the IHierarchyData instance is a wrapper class on a // business object of some kind, you can retrieve the business // object by using the IHierarchyData.Item property. // SomeBusinessObject busObj = node.Item as SomeBusinessObject; } } if (node.get_HasChildren()) { IEnumerator children = ((IHierarchicalEnumerable)node.GetChildren()).GetEnumerator(); while (children.MoveNext()) { // Print out SiteMapNode Titles recursively. IHierarchyData hierarchicalNode = node.GetChildren().GetHierarchyData(children.get_Current()); PrintFullChildNodeInfo(hierarchicalNode); } } }//PrintFullChildNodeInfo </SCRIPT> <HTML> <BODY> <FORM runat="server"> </FORM> </BODY> </HTML>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IHierarchyData プロパティ

名前 | 説明 | |
---|---|---|
![]() | HasChildren | IHierarchyData オブジェクトが表す階層データ ノードに子ノードがあるかどうかを示します。 |
![]() | Item | IHierarchyData オブジェクトが表す階層データ ノードを取得します。 |
![]() | Path | ノードの階層パスを取得します。 |
![]() | Type | Item プロパティに含まれている Object の型の名前を取得します。 |

IHierarchyData メソッド
IHierarchyData メンバ
階層データ構造のノードを公開します。ノード オブジェクトと、そのノードの特性を示すいくつかのプロパティが含まれます。IHierarchyData インターフェイスを実装するオブジェクトは、IHierarchicalEnumerable コレクションに格納でき、ASP.NET サイト ナビゲーションとデータ ソース コントロールによって使用されます。
IHierarchyData データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | HasChildren | IHierarchyData オブジェクトが表す階層データ ノードに子ノードがあるかどうかを示します。 |
![]() | Item | IHierarchyData オブジェクトが表す階層データ ノードを取得します。 |
![]() | Path | ノードの階層パスを取得します。 |
![]() | Type | Item プロパティに含まれている Object の型の名前を取得します。 |


Weblioに収録されているすべての辞書からIHierarchyDataを検索する場合は、下記のリンクをクリックしてください。

- IHierarchyDataのページへのリンク