C# ajouter la validation sur une méthode de définition
J'ai un couple de variables que j'définir en C# par:
public String firstName { get; set; }
public String lastName { get; set; }
public String organization { get; set; }
Ce que je veux, c'est d'ajouter la validation de ces méthodes lorsque vous essayez de définir une valeur. Disons que vous allez définir une valeur pour le prénom, je dois passer une vraie regexp pour actuelly être réglé, sinon une exception doit être levée. Est-ce possible de construire avec ce "syntaxe courte" ou dois-je aller pour la norme (comme en JAVA) getters et les setters et là valider les données?
OriginalL'auteur Marthin | 2011-05-25
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez valider lorsque la propriété est définie, vous devez utiliser non automatique de propriétés (c'est à dire, défini manuellement
get
etset
méthodes).Mais un autre moyen de le vérifier est d'avoir la logique de validation distincts de l'objet du domaine.
Ensuite, vous pourriez dire:
C'est l'approche que je préfère:
Customer
ne devrait pas responsables de la validation de ses propres données, qui est une autre la responsabilité et devrait donc vivre ailleurs.Votre couche de persistance doivent être câblés avec les validateurs qui n'ont pas de persister si la validation échoue.
Le client ne devrait pas être responsable de l'écriture à la base de données. Ce serait une autre responsabilité que le Client ne devrait pas avoir.
Je comprends le "Principe de Responsabilité Unique" (SRP) mais je me demande toujours où le "cut-off" devraient être. Sens, vous pourriez le prendre trop loin...comme la création d'une classe pour définir les propriétés (pour vous). Je ne dis rien au sujet de votre exemple...j'ai juste l'air de trouver en me demandant jusqu'où dois-je aller dans l'application SRP'? ...je devrais peut-être demander à ce qu'une question?
ZERO: je pense que c'est la bonne base pour une autre question, mais vous aurez besoin de venir avec un exemple précis de faire mieux défini.
OriginalL'auteur jason
Ce que vous avez maintenant sont appelés "auto-propriétés", et seulement effectuer une simple "get/set". Dans le but de personnaliser le comportement de la
get
ouset
, vous aurez besoin de convertir les propriétés de champ adossés à des propriétés:Noter que j'ai changé
String
àstring
et en majuscule le nom de la propriété, à la suite accepté C# nommage des meilleures pratiques.OriginalL'auteur StriplingWarrior
Je ne voudrais pas ajouter de validation dans le
setter
à tous. Plutôt, je voudrais créer une fonction appeléevalidate
au lieu...de cette façon à tous de votre code de validation est en un seul endroit plutôt dispersés tout au long de votresetters
.OriginalL'auteur Prisoner ZERO
Vous devez utiliser la propriété pleine et entière de la syntaxe pour cette.
OriginalL'auteur Blindy