Maison >développement back-end >C++ >Comment puis-je récupérer de manière fiable les noms de propriétés des expressions Lambda dans .NET?

Comment puis-je récupérer de manière fiable les noms de propriétés des expressions Lambda dans .NET?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-02-01 05:36:09911parcourir

How Can I Reliably Retrieve Property Names from Lambda Expressions in .NET?

Une approche robuste pour extraire les noms de propriétés de .NET Lambda Expressions

De nombreux développeurs .NET ont souvent besoin d'extraire les noms de propriétés des expressions Lambda. Les méthodes existantes, telles que la coulée directe vers MemberExpression ou le fait de s'appuyer sur des membres basés sur des objets, sont souvent insuffisantes en termes de flexibilité et de sécurité de type. Cet article présente une technique supérieure pour récupérer les noms de propriétés, offrant une robustesse et une vérification de type améliorées.

Amélioration de la récupération du nom de la propriété

Cette méthode améliorée exploite la puissance de la classe PropertyInfo, qui fournit une représentation bien définie d'une propriété dans le framework .NET. La fonction centrale pour extraire l'objet PropertyInfo d'une expression de lambda est la suivante:

<code class="language-csharp">public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
    Expression<Func<TSource, TProperty>> propertyLambda)
{
    // Verify that the expression body is a MemberExpression
    if (!(propertyLambda.Body is MemberExpression member))
    {
        throw new ArgumentException("The lambda expression must refer to a property.");
    }

    // Ensure the member is a PropertyInfo
    if (!(member.Member is PropertyInfo propertyInfo))
    {
        throw new ArgumentException("The member expression must refer to a property.");
    }

    // Validate property type and accessibility
    ValidatePropertyInfo(typeof(TSource), propertyInfo);

    return propertyInfo;
}</code>

Application pratique

La méthode améliorée GetPropertyInfo simplifie le processus de récupération des noms de propriétés:

<code class="language-csharp">var propertyInfo = GetPropertyInfo((SomeUserObject u) => u.UserID);
// Utilize propertyInfo as required</code>

Résumé

Cette approche raffinée offre une solution plus fiable et polyvalente pour accéder aux noms de propriétés à partir des expressions Lambda dans .NET. En éliminant le besoin de coulée manuelle et d'accès aux membres d'objets et d'incorporer une validation de type robuste, les développeurs peuvent écrire du code plus propre, plus maintenable et de type type lorsque vous travaillez avec des expressions Lambda liées à la propriété.

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