Maison > développement back-end > C++ > Comment puis-je obtenir une récupération de nom de propriété de type sécurisé dans les anciennes versions C# ?

Comment puis-je obtenir une récupération de nom de propriété de type sécurisé dans les anciennes versions C# ?

DDD
Libérer: 2024-12-26 21:35:15
original
1005 Les gens l'ont consulté

How Can I Achieve Type-Safe Property Name Retrieval in Older C# Versions?

Solution de contournement de type sécurisé pour l'absence du nom de l'opérateur en C#

Le nom de l'opérateur, qui renvoie la représentation sous forme de chaîne d'un nom de propriété , est un ajout récent à C#. Cependant, l'absence de cet opérateur dans les versions antérieures de C# peut constituer un obstacle à la liaison de données sécurisée par type.

Une solution sécurisée par type utilisant des expressions Lambda

Une solution de contournement pour ce problème, il faut utiliser des expressions lambda pour obtenir les noms de propriétés. Cette approche garantit la sécurité des types tout en fournissant une fonctionnalité similaire à nameof. Voici comment cela fonctionne :

  1. Définissez une classe générique appelée Nameof avec une méthode Property statique.
  2. Dans la méthode Property, récupérez le corps de l'expression lambda fournie.
  3. Convertissez le corps en tant que MemberExpression et extrayez le nom de la propriété du membre field.

Exemple d'utilisation

Le code suivant montre comment utiliser cette solution de contournement :

class Program
{
    static void Main()
    {
        var propName = Nameof<Customer>.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;
    }
}
Copier après la connexion

Dans cet exemple, propName serait contient la chaîne "Nom" après avoir invoqué Property avec l'expression e => e.Name.

Remarque : Cette solution de contournement nécessite .NET 3.5 ou version ultérieure. Pour .NET 2.0, une approche différente serait nécessaire. Cependant, il n'est pas possible de répliquer entièrement la fonctionnalité de nameof sans utiliser d'expressions lambda ou de réflexion, qui ne sont pas prises en charge dans .NET 2.0.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal