Maison >développement back-end >C++ >Comment puis-je obtenir une liaison de données de type sécurisé en C# sans l'opérateur « nameof » ?

Comment puis-je obtenir une liaison de données de type sécurisé en C# sans l'opérateur « nameof » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 08:43:10558parcourir

How Can I Achieve Type-Safe Data Binding in C# Without the `nameof` Operator?

Solutions de contournement pour l'absence d'opérateur 'nameof' en C# pour la liaison de données de type sécurisé

L'absence d'opérateur 'nameof' en C# a suscité des discussions parmi les développeurs. Cet opérateur, s'il est implémenté, permettrait la récupération des noms de propriétés sous forme de chaînes, telles que "Name" à partir de nameof(Customer.Name).

Pour les scénarios nécessitant une liaison de données de type sécurisé, les développeurs ont recherché des solutions de contournement dans le absence de « nom de ». Une solution est apparue dans .NET 3.5 qui utilisait des expressions lambda. Cependant, localiser cette solution de contournement peut s'avérer difficile.

Pour implémenter la fonctionnalité « nameof » dans .NET 3.5, l'approche suivante peut être adoptée :

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        var propName = Nameof<SampleClass>.Property(e => e.Name);

        Console.WriteLine(propName);
    }
}

public class Nameof<T>
{
    public static string Property<TProp>(Expression<Func<T, TProp>> expression)
    {
        var body = expression.Body as MemberExpression;
        if (body == null)
            throw new ArgumentException("'expression' should be a member expression");
        return body.Member.Name;
    }
}

Ce code récupère et affiche efficacement le nom de la propriété sous forme de chaîne tout en garantissant la sécurité du type.

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