🔧 Library Development

Build Custom Validation Libraries

Create your own validation attribute libraries that seamlessly integrate with EasyValidate. Reference EasyValidate.Abstractions to build domain-specific, reusable validation rules.

Quick Start

Get started with creating your own validation attribute library in 3 simple steps

1
Reference Abstractions
Add the EasyValidate.Abstractions NuGet package to your library project
2
Implement Interface
Create attributes implementing IValidationAttribute<T>
3
Return Results
Use AttributeResult to return success or failure

Core Interfaces

Understanding the interfaces you need to implement for your custom attributes

IValidationAttribute<TInput>
The primary interface for synchronous validation without value transformation. Use this for most validation scenarios.

Required Members

  • ErrorCode - Unique identifier for this validation error
  • ConditionalMethod - Method name for conditional execution (optional)
  • Chain - Group name for validation chaining
  • Validate() - Core validation logic returning AttributeResult

Use When

  • Simple pass/fail validation without modifying values
  • Format validation (email, phone, URL)
  • Range checking and constraints
  • Pattern matching and regex validation

Built-in Base Classes

EasyValidate provides base classes you can extend for common validation scenarios

StringValidationAttributeBase
Base class for string validation attributes. Requires referencing EasyValidate.Attributes package in addition to EasyValidate.Abstractions.
Supported Types: string
NumericValidationAttributeBase
Base class for numeric validation. Requires referencing EasyValidate.Attributes package. Supports int, long, decimal, double, float, and their nullable variants.
Supported Types: int, long, decimal, double, float (+ nullable)
DateValidationAttributeBase
Base class for date/time validation. Requires referencing EasyValidate.Attributes package. Supports DateTime, DateTimeOffset, and DateOnly (.NET 6+).
Supported Types: DateTime, DateTimeOffset, DateOnly
CollectionValidationAttributeBase
Base class for collection validation. Requires referencing EasyValidate.Attributes package. Validates IEnumerable, arrays, lists, and other collections.
Supported Types: IEnumerable<T>, List<T>, T[], ICollection<T>

Complete Examples

Real-world examples of custom validation attribute libraries

Domain-Specific Validation Library
Create validation attributes specific to your business domain

AttributeResult API

Return validation results using the AttributeResult struct

Success Methods
Failure Methods

Advanced Features

Leverage advanced EasyValidate features in your custom attributes

ValidationContext Injection
Access the parent model instance for cross-property validation
Dependency Injection
Services are automatically injected via init properties
Conditional Validation
Support conditional execution based on other properties
Validation Chains
Group validations that should run together

Best Practices

Guidelines for building high-quality validation attribute libraries

Project Setup

Recommended project structure for your validation attribute library