web-dev-qa-db-fra.com

Est-ce que C # nameof peut utiliser une propriété d'instance de référence sans instance?

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.

16
Brendan Hill

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.

1
wonea