none
Aus der MSDN-Hotline: Auf Eigenschaften eines anonymen Typs zugreifen nach Cast zum object RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der MSDN-Entwickler-Hotline unter anderem folgende Frage gestellt:

    Wie kann ich möglichst einfach auf die Eigenschaften eines Objekts von einem anonymen Typ zugreifen, der in ein object gecastet wurde?

    Folgenden Code habe ich, der leider nicht funktioniert:

    object foo = new { Text = "hallo" };
    Console.WriteLine(foo.Text); //Das hier geht nicht

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Seit C# 4 kann das Schlüsselwort "dynamic" verwendet werden, um Eigenschaften erst zur Laufzeit zu binden. Damit kann der Code wie folgt umgeschrieben werden:

    object foo = new { Text = "hallo" };
    Console.WriteLine(((dynamic)foo).Text);

    Obwohl die Text-Eigenschaft allgemein nicht bei dynamic-Objekten existiert, kann der obige Quellcode kompiliert werden. Dies liegt daran, dass die Text-Eigenschaft nicht statisch zur Kompilierzeit sondern erst dynamisch zur Laufzeit nachgeschlagen wird - was aber zur Folge hat, dass zur Kompilierzeit mögliche Schreibfehler nicht automatisch entdeckt werden. Folgender Code kompiliert also auch:

    Console.WriteLine(((dynamic)foo).Test);

    Allgemein sollte in solchen Situationen ein eigener nicht-anonymer Typ verwendet werden:

    public class Foo
    {
        public string Text { get; set; }
    }
    
    object foo = new Foo { Text = "hallo" };
    Console.WriteLine(((Foo)foo).Text);

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Henning Dieterichs
    Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline
    MSDN-Entwickler-Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen, Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline .

    Dienstag, 16. Dezember 2014 14:14

Alle Antworten

  • Hallo Henning Dieterichs,

    Vielen Dank für das aufschlussreiche Verfahren, das Sie mitgeteilt haben.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 17. Dezember 2014 13:54
    Moderator