So che questo è stato un po ', ma ho ottenuto questo come segue:
personalizzata Validator:
public class MyValidator : PropertyValidator
{
public MyValidator()
: base("Value must be null or between 0 and 3.")
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
if (context.PropertyValue == null)
{
return true;
}
var value = (decimal)context.PropertyValue;
return value >= 0m && value <= 3m;
}
}
prova Validator:
public class TestValidator : InlineValidator<TestObject>
{
public TestValidator (params Action<TestValidator >[] actions)
{
foreach (var action in actions)
{
action(this);
}
}
}
Oggetto di prova:
public class TestObject
{
public TestObject(decimal? val)
{
this.GenericDecimal = val;
}
public decimal? GenericDecimal { get; set; }
}
prova:
[Test]
public void TestIt()
{
var validator = new TestValidator(v => v.RuleFor(obj => obj.GenericDecimal).SetValidator(new MyValidator()));
Assert.IsTrue(validator.Validate(new TestObject(null)).IsValid);
Assert.IsTrue(validator.Validate(new TestObject(0m)).IsValid);
Assert.IsTrue(validator.Validate(new TestObject(3m)).IsValid);
Assert.IsFalse(validator.Validate(new TestObject(-1m)).IsValid);
Assert.IsFalse(validator.Validate(new TestObject(3.01m)).IsValid);
}
@wonea revisione del [test disponibile] (https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation.Tests/PropertyValidatorTester.cs) nel [sito del progetto] (https://github.com) /JeremySkinner/FluentValidation/tree/master/src/FluentValidation.Tests) mostra che le risposte qui fornite corrispondono a ciò che il proprietario utilizza per testare la fonte. – Nkosi
@wonea e in base ai timestamp sui test pertinenti non sono cambiati negli ultimi 2 anni almeno. – Nkosi