4

私が2つの単純なクラスを持っていると仮定しましょう:

public class CustomerDetails
{
  [Required]
  public string Address
  {
    get;
    set;
  } 
}

public class Customer
{
   public Customer()
   {
     Details = new CustomerDetails();
   }

   [Required]
   public string Name
   {
     get;
     set;
   }
   public CustomerDetails Details
   {
     get;
     private set;
   } 
}

この方法でコンソールアプリケーションのCustomerクラスを手動で検証しようとすると、次のようになります。

var customer = new Customer() { Name = "Conrad" };
var context = new ValidationContext(customer, null, null);
var results = new List<ValidationResult>();
Validator.TryValidateObject(customer, context, true);

次に、-顧客インスタンスのすべてのプロパティを検証することを選択した場合でも-Validatorは、顧客インスタンスのNameプロパティを検証するだけで、DetailsのAddressプロパティは検証しません。

これは設計によるものですか、それともここで何かが足りないのですか?さらに、これが設計によるものである場合、オブジェクトグラフ全体にバリデーターを手動で使用する代わりに、ネストされた型を含む検証属性で装飾されたオブジェクトグラフ全体を手動で検証する堅牢な方法はありますか?

これは、ASP.NET MVCアプリケーションではなく、コンソールアプリケーション内でテストされることに注意してください。

敬具。

4

1 に答える 1