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 하는 컬렉션에 포함될 수 있습니다.

속성

Name Description
HasChildren

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

Item

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

Path

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

Type

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

메서드

Name Description
GetChildren()

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

GetParent()

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

적용 대상

추가 정보