Skip to content

FluentValidationOptionsAdapter TOptions

NexusLabs.Needlr.FluentValidation

FluentValidationOptionsAdapter<TOptions> Class

Adapts a FluentValidation FluentValidation.IValidator<> to work as an Microsoft.Extensions.Options.IValidateOptions<> for Microsoft.Extensions.Options.

public sealed class FluentValidationOptionsAdapter<TOptions> : Microsoft.Extensions.Options.IValidateOptions<TOptions>
    where TOptions : class

Type parameters

TOptions

The options type being validated.

Inheritance System.Object 🡒 FluentValidationOptionsAdapter\<TOptions>

Implements Microsoft.Extensions.Options.IValidateOptions<TOptions>

Remarks

This adapter allows FluentValidation validators to be used seamlessly with Needlr's [Options(ValidateOnStart = true)] attribute. The adapter translates FluentValidation's FluentValidation.Results.ValidationResult into the Microsoft.Extensions.Options.ValidateOptionsResult expected by the options framework.

Usage with Needlr source generation:

[Options("Database", ValidateOnStart = true, Validator = typeof(DatabaseOptionsValidator))]
public class DatabaseOptions { ... }

public class DatabaseOptionsValidator : AbstractValidator<DatabaseOptions>
{
    public DatabaseOptionsValidator()
    {
        RuleFor(x => x.ConnectionString).NotEmpty();
    }
}

Register the adapter in your DI container:

services.AddFluentValidationOptionsAdapter<DatabaseOptions, DatabaseOptionsValidator>();

Constructors

FluentValidationOptionsAdapter(IValidator<TOptions>, string) Constructor

Creates a new adapter for the specified FluentValidation validator.

public FluentValidationOptionsAdapter(FluentValidation.IValidator<TOptions> validator, string? name=null);

Parameters

validator FluentValidation.IValidator<TOptions>

The FluentValidation validator to adapt.

name System.String

Optional name for named options validation.

Methods

FluentValidationOptionsAdapter<TOptions>.Validate(string, TOptions) Method

Validates the specified options instance.

public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options);

Parameters

name System.String

The name of the options instance being validated.

options TOptions

The options instance to validate.

Implements Validate(string, TOptions)

Returns

Microsoft.Extensions.Options.ValidateOptionsResult
A Microsoft.Extensions.Options.ValidateOptionsResult indicating success or failure.