Defining Validations

Suppose you have a class representing an API request you want to validate:

public class CreateUserRequest
{
    public required string Username { get; init; }
    public required string Password { get; init; }
    public required string Email { get; init; }
    public required int Age { get; init; }
    public string? FirstName { get; init; }
    public string? LastName { get; init; }
}

To enable validation capabilities, mark your DTO with the [Validatable] attribute and make it partial. This allows Validly to generate a Validate instance method for the class.

[Validatable]
public partial class CreateUserRequest
{
    // ...
}

Then, decorate each property with the appropriate validation attributes. Here’s an example:

[LengthBetween(5, 20)] // Username must be between 5 and 20 characters.
public required string Username { get; init; }

[MinLength(12)] // Password must be at least 12 characters long.
public required string Password { get; init; }

[EmailAddress] // Email must be in a valid email format.
public required string Email { get; init; }

[Between(18, 120)] // Age must be between 18 and 120.
public required int Age { get; init; }

[NotEmpty] // First name, if provided, cannot be empty.
public string? FirstName { get; init; }

[NotEmpty] // Last name, if provided, cannot be empty.
public string? LastName { get; init; }

Last updated