Maison > développement back-end > C++ > Comment puis-je accéder à des objets de type anonyme en dehors de leur portée en C# ?

Comment puis-je accéder à des objets de type anonyme en dehors de leur portée en C# ?

DDD
Libérer: 2024-12-29 22:01:25
original
762 Les gens l'ont consulté

How Can I Access Anonymous Type Objects Outside Their Scope in C#?

Accéder aux objets de type anonymes au-delà de leur portée en C#

Accéder aux membres de type anonymes en dehors de leur portée déclarée peut poser un défi en C#, en particulier lorsque tenter de transférer des données entre les méthodes. Considérez le code suivant :

void FuncB()
{
    var obj = FuncA();
    Console.WriteLine(obj.Name);
}

FuncA()
{
    var a = (from e in DB.Entities
        where e.Id == 1
        select new {Id = e.Id, Name = e.Name}).FirstOrDefault();

    return a;
}
Copier après la connexion

Malheureusement, ce code entraînera une erreur car obj n'est plus accessible en dehors de FuncA().

Une approche prudente

Il est généralement recommandé d'éviter d'accéder aux objets de type anonyme au-delà de leur portée. Cette pratique peut conduire à un code confus et à des erreurs potentielles. Cependant, si l'accès à des objets de type anonyme en dehors de leur portée est absolument nécessaire, il existe une solution de contournement connue sous le nom de "cast by example". La technique implique l'utilisation de la méthode CastByExample pour convertir un objet de type anonyme en un type souhaité. Voici un exemple :

En fournissant un exemple d'objet, CastByExample() peut déduire le type correct et convertir l'objet cible en ce type.

Attention

public void FuncB()
{
    var example = new { Id = 0, Name = string.Empty };

    var obj = CastByExample(FuncA(), example);
    Console.WriteLine(obj.Name);
}

private object FuncA()
{
    var a = from e in DB.Entities
            where e.Id == 1
            select new { Id = e.Id, Name = e.Name };

    return a.FirstOrDefault();
}

private T CastByExample<T>(object target, T example)
{
    return (T)target;
}
Copier après la connexion

Bien que la technique de diffusion par exemple puisse être utile, elle doit être utilisée avec prudence. Cette pratique peut entraîner des erreurs de conversion si l'objet cible ne correspond pas à l'exemple fourni. Il est toujours conseillé d'envisager des approches alternatives pour accéder aux objets de type anonyme en dehors de leur portée.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal