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 :
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; } }
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!