Heim >Backend-Entwicklung >C++ >Wie kann ich ein Objekt in C# in einen anonymen Typ umwandeln?

Wie kann ich ein Objekt in C# in einen anonymen Typ umwandeln?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 22:46:40145Durchsuche

How Can I Cast an Object to an Anonymous Type in C#?

In anonymen Typ umwandeln

Die Frage ist, wie man ein Objekt in einen anonymen Typ umwandelt. Anonyme Typen werden mithilfe von Objektinitialisierern erstellt und häufig als bequeme Möglichkeit zum Speichern von Daten verwendet. Allerdings haben sie keinen Typnamen, was ihre Umwandlung erschweren kann.

Eine Möglichkeit, ein Objekt in einen anonymen Typ umzuwandeln, besteht darin, einen Trick zu verwenden, bei dem ein Dummy-Wert des gewünschten anonymen Typs verwendet wird Typ. Dieser Dummy-Wert wird verwendet, um den Typ des umzuwandelnden Objekts abzuleiten. Hier ist ein Beispiel:

public class Program
{
    public static void Main(string[] args)
    {
        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.WriteLine(a.Id + ": " + a.Name);
    }

    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;
    }
}

Eine andere Möglichkeit, ein Objekt in einen anonymen Typ umzuwandeln, ist die Verwendung einer generischen Erweiterungsmethode. Mit dieser Methode kann ein Objekt in einen beliebigen anonymen Typ umgewandelt werden. Hier ist ein Beispiel:

public static class AnonymousTypeExtensions
{
    public 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;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        var a = new { Id = 1, Name = "Bob" };
        var b = a.CastTo(new { Id = 0, Name = "" });
        Console.WriteLine(b.Id + ": " + b.Name);
    }
}

Es ist jedoch wichtig zu beachten, dass die Verwendung anonymer Typen auf diese Weise schwierig sein kann und im Allgemeinen nicht empfohlen wird. Es ist besser, stattdessen einen echten Typ zu verwenden.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Objekt in C# in einen anonymen Typ umwandeln?. 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