Maison >développement back-end >C++ >Comment puis-je convertir un type anonyme en C# pour accéder à ses propriétés ?

Comment puis-je convertir un type anonyme en C# pour accéder à ses propriétés ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-06 01:37:40659parcourir

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

Transformer un type anonyme pour accéder aux propriétés

Retransformer un type anonyme en son type d'origine peut être problématique lors de l'accès à ses propriétés. Pour résoudre ce problème, on peut utiliser une astuce pour déduire le type correct.

Tromper le compilateur

La méthode Cast accepte un objet x et un support de type typeHolder du type souhaité. En passant le type anonyme a comme typeHolder, le compilateur peut déduire le type à convertir x en :

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

Utilisation :

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

Méthode de conversion alternative

Une méthode alternative consiste à créer une méthode d'extension CastTo, qui prend la valeur à convertir et la cible type :

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

Utilisation :

var value = x.CastTo(a);

Recommandation

Bien que ces techniques permettent de lancer des types anonymes, il est recommandé d'utiliser de vrais types pour plus de clarté et de facilité d’utilisation.

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:
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