Funktion und Verwendung von dynamic (Teil 3)
Kommentare

Vorteile von dynamic
In den vorherigen Abschnitten wurden die Unterschiede zwischen object/dynamic und var/dynamic erläutert. Wie erkennbar ist, kann der falsche Einsatz von dynamic zu Laufzeitfehlern

Vorteile von dynamic

In den vorherigen Abschnitten wurden die Unterschiede zwischen object/dynamic und var/dynamic erläutert. Wie erkennbar ist, kann der falsche Einsatz von dynamic zu Laufzeitfehlern führen, da keine Typüberprüfung zur Kompilierzeit stattfindet. Wozu sollte man dann dynamic einsetzen? Zunächst sollte der Einsatz immer bedarfsgerecht erfolgen. Das heißt, wenn die Angabe eines Datentyps möglich ist, sollte er auch angegeben werden. Dennoch existieren einige sinnvolle Einsatzfälle für dynamic.

Listing 4 zeigt den dynamic-Einsatz anhand von Office-Steuerung (sog. Office Automation). Die Steuerung von Office-Anwendungen – wie Word und Excel – aus .NET heraus war immer möglich, aber oft sehr umständlich. Zum einen erwarten die Office-Methoden eine Vielzahl von Übergabeparametern und zum anderen geben die Methoden oft nichttypisierte Rückgabewerte zurück. Die zurückgegebenen Objekte mussten somit erst auf den richtigen Typ konvertiert werden (Listing 4). Der erste auskommentierte Aufruf von app.Documents.Open stellt den zuvor beschriebenen Sachverhalt dar. Unter .NET 4.0 und der Verwendung optionaler Parameter kann der Aufruf jedoch viel übersichtlicher ausgeführt werden, wie die nachfolgende Codezeile in Listing 4 demonstriert. Innerhalb der foreach-Schleife werden die Paragrafen des Dokuments durchlaufen.

Der Aufruf get_Style() liefert normalerweise ein nichttypisiertes Objekt zurück, sodass es erst auf den Zieldatentyp – vor der Verwendung spezieller Objekteigenschaften – konvertiert werden muss. Durch den dynamic-Mechanismus entfällt diese sonst notwendige Konvertierung (Abb. 3), da hier die Methoden zur Laufzeit aufgelöst werden. Wird auf die Typkonvertierung verzichtet, steht allerdings kein IntelliSense zur Verfügung. Weitere Informationen zur Office-Steuerung mit Visual Studio 2010 sind bei MSDN zu finden.

Abb. 3: Verwendung von dynamic
Abb. 3: Verwendung von dynamic

Listing 4

public static void Example3() {
  Application app = new Application() { Visible = true };
  object missingValue = System.Reflection.Missing.Value;
  object readOnlyValue = true;
  object fileName = @"C:TestTestDynamic.docx";
  /*Document doc = app.Documents.Open(ref fileName, 
    ref missingValue, ref readOnlyValue,
    ref missingValue, ref missingValue,
    ref missingValue, ref missingValue,
    ref missingValue, ref missingValue,
    ref missingValue, ref missingValue,
    ref missingValue, ref missingValue,
    ref missingValue, ref missingValue); */
  Document doc = app.Documents.Open(fileName, ReadOnly: true);
  foreach (Paragraph thisParagraph in doc.Content.Paragraphs)
  {
    Console.WriteLine(((Style)thisParagraph.get_Style()).NameLocal);
    dynamic style = thisParagraph.get_Style();
    Console.WriteLine(style.NameLocal);
  }
  app.Quit(WdSaveOptions.wdDoNotSaveChanges, 
                           missingValue, missingValue);
}  

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -