"C#Class Desing Handbook"(Pg 137)のサンプルクラスは、クラスのみのコンストラクタの中から特定のフィールドのクラス検証メソッドを呼び出しません。したがって、基本的にサンプルクラスを使用すると、不正なデータを持つオブジェクトを作成し、検証を行うフィールドのプロパティを呼び出すときにそのデータに対してエラーをスローするだけです。だからあなたは今、悪いものを持っていて、事実の後まで知ることはできません。コンストラクタデータを検証する
初期化時に不正なデータが見つかった場合に、コンストラクタからプロパティを呼び出すだけでエラーが発生するのはなぜですか?
私のコンストラクタから自分のプロパティを呼び出すと、次のようなフォーマットが使用される傾向があります。これは、初期化データを検証するための適切な構造ですか? 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);
}
}
これはおそらくコミュニティ質問であるべきです - もし誰かがそれを正しく設定してください。 – user10178