ExpandoObject, das Objekt mit dynamischen Eigenschaften

Als Entwickler schreiben Sie sicher des Öfteren Datenobjekte. Dies sind im Allgemeinen Objekte mit festgelegten Eigenschaften. Sicherlich haben Sie sich dabei auch schon das ein oder andere Mal gewünscht, diese unflexiblen Datenobjekte dynamisch um weitere Eigenschaften ergänzen zu können. In diesem Artikel möchte ich Ihnen zeigen wie Sie sich diesen Wunsch mit Hilfe der ExpandoObject Klasse erfüllen können.

 
ExpandoObject

Mit Hilfe der ExpandoObject Klasse kann ein Objekt erstellt werden, dessen Eigenschaften bei ihrem ersten Aufruf dynamisch erzeugt werden. Diese Eigenschaften lassen sich danach nutzen. Der folgende Quellcode zeigt ein entsprechendes Beispiel.

    1 static void Main(string[] args)

    2 {

    3     dynamic myObject = new ExpandoObject();

    4 

    5     myObject.FirstName = "John";

    6     myObject.LastName = "Doe";

    7     myObject.Age = 35;

    8 

    9     Console.WriteLine("{0} {1} is {2} years old",

   10         myObject.FirstName, myObject.LastName, myObject.Age);               

   11 

   12     Console.ReadKey();

   13 }

 
Es ist dabei auch möglich alle Eigenschaften des Objektes aufzulisten. So können Sie prüfen welchen Inhalt das Objekt bereitstellt. Intern speichert das ExpandoObject alle Eigenschaften in einem Dictionary. Daher wird dieses Dictionary für die Iteration über alle Elemente genutzt.

    1 static void Main(string[] args)

    2 {

    3     dynamic myObject = new ExpandoObject();

    4 

    5     myObject.FirstName = "John";

    6     myObject.LastName = "Doe";

    7     myObject.Age = 35;

    8 

    9     foreach (var property in (IDictionary<String, Object>)myObject)

   10     {

   11         Console.WriteLine(property.Key + ": " + property.Value);

   12     }

   13 

   14     Console.ReadKey();

   15 }

 
Fazit

Mit einem ExpandoObject lassen sich dynamische Datenklassen erzeugen. In einigen Anwendungsfällen lässt sich dadurch der Programmieraufwand reduzieren, da es nicht mehr nötig ist viele statische Datenklassen zu entwickeln. Ausserdem kann das ExpandoObject in einigen Fällen zu besser lesbarem Quellcode führen. Diese Flexibilität resultiert aber leider in einer eingeschränkten IntelliSense Unterstützung.

Werbung
Dieser Beitrag wurde unter .NET, C# abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort zu ExpandoObject, das Objekt mit dynamischen Eigenschaften

  1. Pingback: ExpandoObject to CSV, ExpandoObject to XML | coders corner

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s