Alors que le code pour créer une coutume Attribute est assez simple, il est beaucoup plus important que vous compreniez quels sont les attributs:
Les attributs sont des métadonnées compilées dans votre programme. Les attributs eux-mêmes n'ajoutent aucune fonctionnalité à une classe, une propriété ou un module, seulement des données. Cependant, en utilisant la réflexion, on peut tirer parti de ces attributs afin de créer des fonctionnalités. Ainsi, par exemple, regardons Validation Application Block, de Enterprise Library. Si vous regardez un exemple de code, vous verrez:
/// <summary>
/// blah blah code.
/// </summary>
[DataMember]
[StringLengthValidator(8, RangeBoundaryType.Inclusive, 8, RangeBoundaryType.Inclusive, MessageTemplate = "\"{1}\" must always have \"{4}\" characters.")]
public string Code { get; set; }
De l'extrait ci-dessus, on peut deviner que le code sera toujours validé, chaque fois changé, en conséquence les règles du validateur (dans l'exemple, avoir au moins 8 caractères et au plus 8 caractères). Mais la vérité est que l'attribut ne fait rien, ajoute seulement des métadonnées à la propriété.
Toutefois, la bibliothèque d'entreprise a une méthode Validation.Validate
qui examinera votre objet, et pour chaque propriété, elle vérifiera si le contenu enfreint la règle informée par l'attribut. Donc, voilà comment vous devriez penser aux attributs - un moyen d'ajouter des données à votre code qui pourraient être utilisées plus tard par d'autres méthodes/classes/etc.
vais vraiment aimer la réponse et spécialement ", une autre question que je peux mettre même condition dans l'ensemble de déclaration du code ci-dessus, donc comment différent des attributs, –
@slash: Pouvez-vous reformuler cela? Je n'ai pas bien compris la question –
Je pense que la barre oblique voulait dire la différence entre utiliser des attributs et mettre le vrai code de validation dans le setter de la propriété Réponse: Alors que l'écriture du code peut être faite pour valider la valeur, Les attributs ne sont que des "méta-données" Un autre code devrait être intéressé par les attributs que vous utilisez, les lire et effectuer des actions basées sur ces attributs, comme par exemple @BrunoBrant – romar