Maison >développement back-end >C++ >Comment puis-je récupérer un nom de propriété à partir d'une expression de lambda en C #?

Comment puis-je récupérer un nom de propriété à partir d'une expression de lambda en C #?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-01 05:56:08949parcourir

How Can I Retrieve a Property Name from a Lambda Expression in C#?

Extraire le nom d'attribut de l'expression lambda

Lorsque vous utilisez l'expression de lambda à l'aide du nom de l'attribut de passage, la récupération du nom d'attribut réel peut être difficile. Cependant, il existe des moyens d'extraire efficacement ces informations.

L'implémentation initiale impliquait l'expression de la conversion de lambda en une expression de membre, en supposant que l'attribut est une chaîne. Cependant, cela ne s'applique qu'aux attributs de chaîne.

Afin de résoudre ce problème, une méthode plus complète est nécessaire, qui peut gérer en même temps des attributs de chaîne et de non-string. La méthode suivante fournit une solution:

<code class="language-csharp">public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
    TSource source,
    Expression<Func<TSource, TProperty>> propertyLambda)</code>
Cette méthode accepte les objets source et les expressions lambda en entrée et renvoie l'objet PropertyInfo qui indique les attributs accessibles. Si l'expression ne cite pas l'attribut, elle provoquera des anomalies.

dans la mise en œuvre de la méthode:

    Il vérifie si le texte de l'expression de Lambda est Memberexpression et si le membre est propriétéInfo. Si la condition n'est pas remplie, elle provoquera des anomalies.
  1. Le type de réflexion de l'attribut est adapté au type de source ou s'il s'agit d'une sous-classe du type de source. Sinon, cela provoquera des anomalies.
En utilisant cette méthode, vous pouvez obtenir en toute sécurité l'objet PropertyInfo à partir de l'expression de lambda pour vous assurer que les attributs des interrogés sont corrects et existaient dans l'objet cible.

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