これらの各オブジェクトに必要な検証ロジックを一元化するために、Email、Url、Alphabet、Number、...などのクラスを定義しました。
public class Email
{
private string value;
private bool isValid;
const string RegexPattern = @"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$";
public Email(string address, int minLength = 8, int maxLength = 50)
{
value = address;
isValid = Validator.IsValid(address,RegexPattern,minLength,maxLength);
}
public string Address
{
get
{
return value;
}
}
public bool IsValid
{
get
{
return isValid;
}
}
}
これは値オブジェクトと呼ぶことができますか?それが欠けているものでなければ?