4
構造体を使用して組み込み型の検証を実施する
通常、ドメインオブジェクトには、組み込みの型で表すことができるプロパティがありますが、その有効な値は、その型で表すことができる値のサブセットです。 これらの場合、値は組み込み型を使用して格納できますが、値は常にエントリの時点で検証されるようにする必要があります。そうしないと、無効な値で処理される可能性があります。 これを解決する1つの方法は、組み込み型のstruct単一のprivate readonlyバッキングフィールドがあり、そのコンストラクターが指定された値を検証するカスタムとして値を格納することです。そうすれば、このstructタイプを使用することで、検証済みの値のみを使用することが常に確実になります。 基になる組み込み型との間のキャスト演算子を提供して、値が基になる型としてシームレスに出入りできるようにすることもできます。 例として、ドメインオブジェクトの名前を表す必要がある状況を取り上げます。有効な値は、1〜255文字の文字列です。これを表すには、次の構造体を使用します。 public struct ValidatedName : IEquatable<ValidatedName> { private readonly string _value; private ValidatedName(string name) { _value = name; } public static bool IsValid(string name) { return !String.IsNullOrEmpty(name) && name.Length <= 255; } public bool Equals(ValidatedName other) { return _value == other._value; } public override bool …