Maison > développement back-end > C++ > Comment puis-je convertir un objet en type anonyme en C# ?

Comment puis-je convertir un objet en type anonyme en C# ?

Linda Hamilton
Libérer: 2025-01-05 22:46:40
original
162 Les gens l'ont consulté

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

Convertir en type anonyme

La question est de savoir comment convertir un objet en type anonyme. Les types anonymes sont créés à l'aide d'initialiseurs d'objet et sont souvent utilisés comme moyen pratique de stocker des données. Cependant, ils n'ont pas de nom de type, ce qui peut rendre difficile leur conversion.

Une façon de convertir un objet en un type anonyme consiste à utiliser une astuce qui implique l'utilisation d'une valeur factice de l'anonyme souhaité. taper. Cette valeur factice est utilisée pour déduire le type de l'objet à diffuser. Voici un exemple :

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;
    }
}
Copier après la connexion

Une autre façon de convertir un objet en un type anonyme consiste à utiliser une méthode d'extension générique. Cette méthode peut être utilisée pour convertir un objet en n’importe quel type anonyme. Voici un exemple :

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);
    }
}
Copier après la connexion

Cependant, il est important de noter que l'utilisation de types anonymes de cette manière peut être délicate et n'est généralement pas recommandée. Il est préférable d'utiliser un vrai type à la place.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal