Files
spectre.console/src/Spectre.Console.Tests/Data/Validators/EvenNumberValidatorAttribute.cs
Patrik Svensson 1dd1945297 Add parameter value provider support
Adds support for parameter value providers which makes it
possible to set custom values for parameters.
2021-05-09 08:26:08 -05:00

30 lines
897 B
C#

using System;
using Spectre.Console.Cli;
namespace Spectre.Console.Tests.Data
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public sealed class EvenNumberValidatorAttribute : ParameterValidationAttribute
{
public EvenNumberValidatorAttribute(string errorMessage)
: base(errorMessage)
{
}
public override ValidationResult Validate(CommandParameterContext context)
{
if (context.Value is int integer)
{
if (integer % 2 == 0)
{
return ValidationResult.Success();
}
return ValidationResult.Error($"Number is not even ({context.Parameter.PropertyName}).");
}
throw new InvalidOperationException($"Parameter is not a number ({context.Parameter.PropertyName}).");
}
}
}