0

これらの各オブジェクトに必要な検証ロジックを一元化するために、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;
            }
        }


}

これは値オブジェクトと呼ぶことができますか?それが欠けているものでなければ?

4

1 に答える 1

1

実装は、私が値オブジェクトに期待するものです。これは不変であり(ただしreadonly、フィールドに修飾子を追加することもできます)、独自のIDを持っていないようです。

ドメインに応じて、それが実際に値オブジェクトであるかどうかを検討する必要があります。これが、これが値オブジェクトであるかどうかを決定する方法です。

于 2012-10-08T15:52:05.540 に答える