La tâche de récupération de noms de variables à l'aide de la réflexion intrigue les développeurs depuis un certain temps. L'impossibilité d'accéder aux noms de variables après la compilation dans IL présente un défi. Cependant, avec une approche créative, la réflexion peut être exploitée pour surmonter cette limitation.
Pour y parvenir, des arbres d'expression et une promotion de clôture sont utilisés. Les arbres d'expression offrent un moyen de représenter les expressions de manière programmatique. En promouvant une variable en fermeture, vous pouvez efficacement conserver son nom.
Le code suivant démontre l'implémentation de cette technique :
static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
Cette méthode prend une expression et récupère le nom de la variable à laquelle elle fait référence. Par exemple :
static void Main() { var someVar = 3; Console.Write(GetVariableName(() => someVar)); }
Dans cet exemple, la méthode GetVariableName est utilisée pour récupérer le nom de la variable someVar.
Considérations relatives aux performances
Il est important de noter que cette technique peut être coûteuse en calcul. La création et la destruction d'objets pendant l'exécution peuvent augmenter la pression du garbage collection. De plus, sous le capot, plusieurs méthodes sont appelées et la réflexion est fortement utilisée. Par conséquent, il est conseillé d'éviter d'utiliser cette approche dans les chemins de code critiques en termes de performances.
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!