Un exemple de classe dans le "Manuel de description de classe C#" (p. 137) n'appelle pas la méthode de validation des classes pour un champ spécifique à l'intérieur du constructeur des classes uniquement. Donc, fondamentalement, la classe d'échantillon vous permet de créer un objet avec de mauvaises données et ne lance une erreur que pour cette donnée lorsque vous appelez la propriété du champ qui la valide alors. Donc vous avez maintenant un mauvais objet et ne le savez pas après le fait.Validation des données du constructeur
Je n'ai jamais compris pourquoi ils n'appellent pas simplement la propriété du constructeur en lançant une erreur immédiatement si de mauvaises données sont trouvées pendant l'initialisation? Je les ai envoyé par e-mail en vain ...
J'ai tendance à utiliser le format suivant en appelant mes propriétés de mes constructeurs - est-ce la bonne structure pour valider les données d'initialisation? ty
class Foo
{
private string _emailAddress;
public Foo(string emailAddress)
{
EmailAddress = emailAddress;
}
public string EmailAddress
{
get { return _emailAddress; }
set
{
if (!ValidEmail(value))
throw new ArgumentException
(string.Format
("Email address {0} is in wrong format",
value));
_emailAddress = value;
}
}
private static bool ValidEmail(string emailAddress)
{
return Regex.IsMatch
(emailAddress, @"\b[A-Z0-9._%+-]+" +
@"@[A-Z0-9.-]+\.[A-Z]{2,4}\b",
RegexOptions.IgnoreCase);
}
}
Cela devrait probablement être une question de communauté - quelqu'un pourrait-il s'il vous plaît le régler correctement si c'est le cas. – user10178