다음을 통해 공유


IHierarchyData 인터페이스

정의

노드의 특성에 대해 설명하는 노드 개체와 일부 속성을 포함하여 계층적 데이터 구조의 노드를 노출합니다. IHierarchyData 인터페이스를 구현하는 개체는 IHierarchicalEnumerable 컬렉션에 포함될 수 있으며 ASP.NET 사이트 탐색 및 데이터 소스 컨트롤에 사용됩니다.

public interface class IHierarchyData
public interface IHierarchyData
type IHierarchyData = interface
Public Interface IHierarchyData
파생

예제

다음 코드 예제를 구현 하는 방법에 설명 합니다 IHierarchyData 래핑하는 클래스를 사용 하 여 인터페이스를 FileSystemInfo 개체입니다. 합니다 FileSystemInfo 클래스는 계층적 데이터 노드를의 좋은 예는는 IHierarchyData ASP.NET 계층적 데이터 소스 컨트롤에 대 한 인터페이스를 나타냅니다. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 HierarchicalDataSourceControl 클래스입니다.

public class FileSystemHierarchyData : IHierarchyData
{
    private FileSystemInfo fileSystemObject = null;

    public FileSystemHierarchyData(FileSystemInfo obj)
    {
        fileSystemObject = obj;
    }

    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;
    }
}

Public Class FileSystemHierarchyData
    Implements IHierarchyData

    Public Sub New(ByVal obj As FileSystemInfo)
        fileSystemObject = obj
    End Sub

    Private fileSystemObject As FileSystemInfo = Nothing

    Public Overrides Function ToString() As String
        Return fileSystemObject.Name
    End Function

    ' 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
    End Property
    ' 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

다음 코드 예제에서는 어떻게를 재귀적으로 반복를 IHierarchicalEnumerable 컬렉션을 추출 합니다 IHierarchyData 항목을 사용 하는 열거자에서는 GetHierarchyData 메서드를 데이터 항목을 사용 하 여 기본 작업을 수행 하 고.

<%@ 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 xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>
<%@ 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 xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

설명

IHierarchyData 인터페이스는 노드의 계층 구조를 나타내고 해당 부모 및 자식 노드를 계층 관계를 추적 하는 클래스에서 구현 됩니다. 구현 하는 클래스를 IHierarchyData 인터페이스를 구현 하는 컬렉션에 포함 될 수는 IHierarchicalEnumerable 인터페이스입니다.

속성

HasChildren

IHierarchyData 개체가 나타내는 계층적 데이터 노드에 자식 노드가 있는지 여부를 나타냅니다.

Item

IHierarchyData 개체가 나타내는 계층적 데이터 노드를 가져옵니다.

Path

노드의 계층 경로를 가져옵니다.

Type

Object 속성에 포함된 Item의 형식 이름을 가져옵니다.

메서드

GetChildren()

현재 계층적 노드의 모든 자식 노드를 나타내는 열거형 개체를 가져옵니다.

GetParent()

현재 계층적 노드의 부모 노드를 나타내는 IHierarchyData 개체를 가져옵니다.

적용 대상

추가 정보