“C# 类设计手册”(第 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);
}
}