Rekursive Ausgabe des Datenbestands
Das folgende Beispiel soll den Zugriff auf den hierarchisch gegliederten Datenbestand veranschaulichen.
using System; using Onion.Client; class Program { static void Main(string[] args) { using (var session = new OnionSession("ipc://onion.net/onion/server", "admin", "admin")) { PrintTree(session.Repository.Root, 0); } } private static void PrintTree(IDataObject item, int level) { Console.WriteLine("".PadLeft(level * 2) + item.Name); foreach (IDataObject child in item.Children) { PrintTree(child, level + 1); } } }
Wie im letzten Beispiel wird eine Verbindung zum onion.net Information Server hergestellt. Die Eigenschaft IOnionSession.Repository gruppiert alle Datenoperationen der onion.net Client API. Die Wurzel aller Datenobjekte ist über die Eigenschaft IDataRepository.Root erreichbar.
Die rekursive Methode PrintTree unseres Beispiels gibt jeweils den Bezeichner eines Datenobjekts aus und stellt eingerückt die Kindelemente dar. Dies sind die verwendeten Schnittstellen des Beispiels:
public interface IDataRepository { IDataObject Root { get; } // ... } public interface IDataObject { int Id { get; } string Name { get; } IDataObjectChildrenCollection Children { get; } // ... }
So könnte die Ausgabe in einem System mit einigen Daten aussehen:
Editor System XHTML-Editor Website Base XSL Renderengine Icons Ressourcen de en childrenlistviews xmleditor Editorfunktionen GenericForms Icons Objektstrukturfenster Ressourcen de XHTML Editor Scripts Icons Ressourcen de en Themes Icons Ressourcen de en Lokalisierung Icons Ressourcen de en Lightview Icons Ressourcen de Structureabstraction Icons Objektstrukturfenster