# EasyValidate > A modern, type-safe .NET validation library using source generators, Roslyn analyzers, and code fixers. EasyValidate enables powerful, composable, and type-safe validation using attributes with compile-time code generation. ## Documentation - [Full Documentation](https://easy-validate.netlify.app) - [AI API (JSON)](https://easy-validate.netlify.app/api/ai) - [AI Summary (Text)](https://easy-validate.netlify.app/api/ai/summary) - [Getting Started](https://easy-validate.netlify.app/getting-started) - [Attributes Reference](https://easy-validate.netlify.app/attributes) - [Analyzers](https://easy-validate.netlify.app/analyzers) - [Code Fixers](https://easy-validate.netlify.app/fixers) - [Custom Attributes](https://easy-validate.netlify.app/custom-attributes) - [Async Validation](https://easy-validate.netlify.app/async) - [Parameter Validation](https://easy-validate.netlify.app/parameter-validation) - [Smart Validation](https://easy-validate.netlify.app/smart-validation) - [Examples](https://easy-validate.netlify.app/examples) - [Usage Guide](https://easy-validate.netlify.app/usage) ## Quick Reference ### Installation ```bash dotnet add package EasyValidate ``` ### Basic Usage ```csharp using EasyValidate.Abstractions; using EasyValidate.Attributes; public partial class User : IGenerate { [NotNull] [NotEmpty] public string? Name { get; set; } [NotNull] [EmailAddress] public string? Email { get; set; } [Range(18, 120)] public int Age { get; set; } } var user = new User { Name = "John", Email = "john@example.com", Age = 25 }; var result = user.Validate(); if (result.IsValid()) { /* valid */ } ``` ### Key Requirements 1. Classes must be `partial` 2. Classes must implement `IGenerate` 3. Use attributes from `EasyValidate.Attributes` namespace ### Attribute Categories - **String**: NotEmpty, EmailAddress, Url, Phone, CreditCard, Alpha, AlphaNumeric, Matches, etc. - **Numeric**: Range, Positive, Negative, GreaterThan, LessThan, Prime, etc. - **Date**: PastDate, FutureDate, DateRange, MinAge, MaxAge, etc. - **Collection**: HasElements, MinLength, MaxLength, UniqueElements, etc. - **General**: NotNull, Optional, NotDefault, EqualTo, NotEqualTo ### Common Properties All attributes support: - `ErrorCode` - Custom error identifier - `Chain` - Group related validations - `ConditionalMethod` - Run validation conditionally ## Repository https://github.com/mu-dawood/EasyValidate ## License GPL-3.0