using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public static void Main()
var instance = new Order();
List<ValidationResult> validationResults = [];
var validationContext = new ValidationContext(instance.DeliveryAddress);
var isValid = Validator.TryValidateObject(
instance.DeliveryAddress, validationContext, validationResults, validateAllProperties: true);
Console.WriteLine(isValid);
foreach (var result in validationResults)
public sealed class Order
public int OrderId { get; set; }
public string UserId { get; set; }
public DateTime CreatedTime { get; set; }
public Address DeliveryAddress { get; set; } = new();
public sealed class Address
public int Id { get; set; }
[Required, MinLength(3), MaxLength(100)]
public string Name { get; set; }
[Required, MaxLength(100)]
public string Line1 { get; set; }
public string Line2 { get; set; }
[Required, MaxLength(50)]
public string City { get; set; }
[Required, MaxLength(20)]
public string Region { get; set; }
[Required, MaxLength(20)]
public string PostalCode { get; set; }