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