Heim >Backend-Entwicklung >C++ >Wie kann ich einen anonymen Typ in C# umwandeln, um auf seine Eigenschaften zuzugreifen?

Wie kann ich einen anonymen Typ in C# umwandeln, um auf seine Eigenschaften zuzugreifen?

Susan Sarandon
Susan SarandonOriginal
2025-01-06 01:37:40658Durchsuche

How Can I Cast an Anonymous Type in C# to Access Its Properties?

Anonymen Typ umwandeln, um auf Eigenschaften zuzugreifen

Das Umwandeln eines anonymen Typs zurück in seinen ursprünglichen Typ kann beim Zugriff auf seine Eigenschaften problematisch sein. Um dieses Problem zu lösen, kann man einen Trick anwenden, um auf den richtigen Typ zu schließen.

Den Compiler austricksen

Die Methode Cast akzeptiert ein Objekt x und einen Typhalter typeHolder des gewünschten Typs. Durch Übergabe des anonymen Typs a als typeHolder kann der Compiler den Typ ableiten, in den x umgewandelt werden soll:

private static T Cast<T>(T typeHolder, Object x)
{
    // typeHolder above is just for compiler magic
    // to infer the type to cast x to
    return (T)x;
}

Verwendung:

var a = new { Id = 1, Name = "Bob" };
TestMethod(a);
...
private static void TestMethod(Object x)
{
    // This is a dummy value, just to get 'a' to be of the right type
    var a = new { Id = 0, Name = "" };
    a = Cast(a, x);
    Console.Out.WriteLine(a.Id + ": " + a.Name);
}

Alternative Umwandlungsmethode

Eine alternative Methode besteht darin, eine Erweiterungsmethode CastTo zu erstellen, die den umzuwandelnden Wert und das Ziel übernimmt Typ:

private static T CastTo<T>(this Object value, T targetType)
{
    // targetType above is just for compiler magic
    // to infer the type to cast value to
    return (T)value;
}

Verwendung:

var value = x.CastTo(a);

Empfehlung

Während diese Techniken die Umwandlung anonymer Typen ermöglichen, wird empfohlen, echte zu verwenden Typen für Klarheit und Benutzerfreundlichkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich einen anonymen Typ in C# umwandeln, um auf seine Eigenschaften zuzugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn