Je souhaite régulièrement obtenir le nom d'une propriété d'instance d'un type, lorsque je n'ai pas d'instance. Actuellement, pour cela, j'utilise la fonction interne suivante qui interprète le paramètre Expression[Func[T, object]]
et renvoie le nom de la propriété:
var str = LinqExtensions.NameOf<ClientService>(x => x.EndDate);
// Now str == "EndDate"
Cependant, il semble dommage de ne pas utiliser l'opérateur nameof
intégré.
Malheureusement, il semble que l'opérateur nameof
nécessite soit une instance, soit une référence à des propriétés statiques.
Existe-t-il un moyen intéressant d’utiliser l’opérateur nameof
au lieu de notre fonction interne? Par exemple:
nameof(ClientService.EndDate) // ClientService.EndDate not normally syntactically valid as EndDate is instance member
MODIFIER
J'avais complètement tort, la syntaxe nameof(ClientService.EndDate)
telle que décrite fonctionne réellement telle quelle.
Excellente réponse de Peter Duniho.
En cas de conflit de noms, vous pouvez également effectuer les opérations suivantes:
ClientService clientservice;
var str = nameof(clientservice.EndDate);
Pas efficace, mais assez curieux.