Образец класса в «C # Class Desing Handbook» (стр. 137) не вызывает метод проверки классов для определенного поля из конструктора «Только классы». Таким образом, в основном образец класса позволяет вам создать объект с неверными данными и выдает ошибку для этих данных только тогда, когда вы вызываете свойство поля, которое затем проверяет его. Итак, у вас теперь есть плохой объект, и вы об этом не узнаете, пока не закончите.
Я никогда не понимал, почему они не просто вызывают свойство из конструктора, таким образом, немедленно выдавая ошибку, если во время инициализации обнаружены неверные данные? Я послал их по электронной почте безрезультатно ...
Я склонен использовать следующий формат, вызывая мои свойства из моих конструкторов - это правильная структура для проверки данных инициализации? ти
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);
}
}