11
votes

C # Nommage d'attribut personnalisé

J'ai une classe d'attributs personnalisée que j'ai définie comme: xxx

à partir du site Web de Microsoft:

par convention, le nom de la La classe d'attributs se termine par le mot Attribut. Bien que non requis, cela La convention est recommandée pour lisibilité. Quand l'attribut est appliqué, l'inclusion du mot L'attribut est facultatif.

Donc, l'attribut peut être utilisé par xxx

ou xxx

ma question à Vous tous, c'est si quelqu'un a connu des problèmes d'utilisation de la version abrégée du nom vs le nom complet? Je suis en cours d'exécution 4.0 Cadre.

Merci!


4 commentaires

Quel genre de problemes? La question est un peu ouverte ...


Vous devriez pouvoir appeler [myCustom] sans aucun problème (et sans parenthèses à ce sujet :) Avez-vous des problèmes alors? Des messages d'erreur?


Nan! Je pense que c'est comme demander à "Avez-vous eu des problèmes de ne pas commencer les noms d'interfaces avec un i?" Son travaille bien depuis des années ...


Oui, c'est ... J'avais des problèmes de temps d'exécution et comment l'attribut était appelé était le seul changement que j'ai remarqué (mais il y a probablement autre chose). Une des raisons de mon inquiétude utilisait la méthode de l'Assemblée GetCustomAttribute. Mais il semble que la réponse écrasante est que cela fonctionne parfaitement.


4 Réponses :


1
votes

Nope. Facile comme tarte!

En outre, vous pouvez l'utiliser sans le vide () parenthèses


0 commentaires

0
votes

En général, vous ne devriez pas avoir de problèmes. Le compilateur C # est suffisamment intelligent pour le résoudre au type approprié dans les deux cas.


0 commentaires

9
votes

Ça devrait aller bien ... Je vous conseillerais de ne pas introduire de deux attributs avec des noms qui ne diffèrent que par le nombre de suffixes d'attribut: xxx

i suspect Le match exact gagnerait ici, mais s'il vous plaît ne présentez pas l'ambiguïté en premier lieu. (Je n'ai pas vérifié la spécification.)


0 commentaires

12
votes

aucun problème.

Sous dans la compilée il le nom a toujours l'attribut annexé à celui-ci (nom complet de type).

Basé sur ECMA-334 (C # SPEC) 24.2, la résolution est effectuée en premier par correspondance exacte, puis en ajoutant "attribut" au nom donné dans []. De plus, s'il y a un conflit (ex: myAttribute et myAttributeAttribute) une erreur de compilation est générée lorsque "myAttribute" serait utilisé.


0 commentaires