Maison >développement back-end >C++ >Comment puis-je accéder à des objets de type anonyme en dehors de leur portée déclarée en C# ?
Accès aux objets de type anonymes au-delà de la portée déclarée
En C#, les types anonymes sont générés dynamiquement en fonction des noms de propriétés et des valeurs extraites d'une source. Cependant, la portée de ces objets est limitée au bloc où ils sont déclarés. Cela soulève la question : comment pouvons-nous accéder à des objets de type anonyme en dehors de leur portée déclarée ?
Utilisation de "Cast by Exemple" (prudence conseillée)
Bien que ce soit généralement le cas Non recommandée, une technique dite de "cast by example" permet d'accéder à des objets de type anonyme au-delà de leur portée. Ce hack consiste à créer un objet « exemple » distinct avec les mêmes propriétés que le type anonyme auquel nous voulons accéder.
Implémentation :
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; }
Avertissements :
En résumé, accéder à des objets de type anonyme au-delà de leur portée en utilisant "cast by example" est possible, mais c'est une pratique risquée qui doit être évitée autant que possible.
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!