IHierarchyData Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een knooppunt van een hiërarchische gegevensstructuur weergegeven, waaronder het knooppuntobject en enkele eigenschappen die kenmerken van het knooppunt beschrijven. Objecten die de interface IHierarchyData implementeren, kunnen worden opgenomen in IHierarchicalEnumerable verzamelingen en worden gebruikt door ASP.NET sitenavigatie en besturingselementen voor gegevensbronnen.
public interface class IHierarchyData
public interface IHierarchyData
type IHierarchyData = interface
Public Interface IHierarchyData
- Afgeleid
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de IHierarchyData interface implementeert met een klasse die een FileSystemInfo object verpakt. De klasse FileSystemInfo is een goed voorbeeld van een hiërarchisch gegevensknooppunt, dat de interface IHierarchyData vertegenwoordigt voor ASP.NET hiërarchische besturingselementen voor gegevensbronnen. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de HierarchicalDataSourceControl klasse.
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
In het volgende codevoorbeeld ziet u hoe u recursief door een IHierarchicalEnumerable verzameling kunt herhalen, het IHierarchyData item kunt extraheren uit de enumerator met behulp van de GetHierarchyData methode en basistaken kunt uitvoeren met het gegevensitem.
<%@ 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>
Opmerkingen
De IHierarchyData interface wordt geïmplementeerd door klassen die knooppunten van een hiërarchische structuur vertegenwoordigen en de hiërarchische relaties met hun bovenliggende en onderliggende knooppunten bijhouden. Klassen die de IHierarchyData interface implementeren, kunnen worden opgenomen in verzamelingen die de IHierarchicalEnumerable interface implementeren.
Eigenschappen
| Name | Description |
|---|---|
| HasChildren |
Geeft aan of het hiërarchische gegevensknooppunt dat het IHierarchyData object vertegenwoordigt onderliggende knooppunten heeft. |
| Item |
Hiermee haalt u het hiërarchische gegevensknooppunt op dat het IHierarchyData object voorstelt. |
| Path |
Hiermee wordt het hiërarchische pad van het knooppunt opgehaald. |
| Type |
Hiermee haalt u de naam op van het type dat Object in de Item eigenschap is opgenomen. |
Methoden
| Name | Description |
|---|---|
| GetChildren() |
Hiermee haalt u een opsommingsobject op dat alle onderliggende knooppunten van het huidige hiërarchische knooppunt vertegenwoordigt. |
| GetParent() |
Hiermee wordt een IHierarchyData object opgehaald dat het bovenliggende knooppunt van het huidige hiërarchische knooppunt vertegenwoordigt. |