/// <summary>
 /// Checks that property value is not null.
 /// </summary>
 /// <typeparam name="T">Property type.</typeparam>
 /// <typeparam name="TValidationRule">Combined validation rule type.</typeparam>
 /// <param name="linker">Rule linker.</param>
 /// <returns>Combined validation rule.</returns>
 public static TValidationRule NotNull <T, TValidationRule>(this IValidationRuleLinker <T, TValidationRule> linker)
     where TValidationRule : IPropertyValidationRule <T>
 {
     return(linker.CombineWith(new NotNull <T>(linker.FirstRule.Property)));
 }
예제 #2
0
 /// <summary>
 /// Checks that property value matches some condition.
 /// </summary>
 /// <typeparam name="T">Property type.</typeparam>
 /// <typeparam name="TValidationRule">Combined validation rule type.</typeparam>
 /// <param name="linker">Rule linker.</param>
 /// <param name="isValid">Function that checks value is valid.</param>
 /// <returns>Combined validation rule.</returns>
 public static TValidationRule ShouldBe <T, TValidationRule>(this IValidationRuleLinker <T, TValidationRule> linker, Func <T, bool> isValid)
     where TValidationRule : IValidationRule <T>
 {
     return(linker.CombineWith(linker.FirstRule.Property.ShouldBe(isValid)));
 }
예제 #3
0
 /// <summary>
 /// Checks that property value is not default.
 /// </summary>
 /// <typeparam name="T">Property type.</typeparam>
 /// <typeparam name="TValidationRule">Combined validation rule type.</typeparam>
 /// <param name="linker">Rule linker.</param>
 /// <returns>Combined validation rule.</returns>
 public static TValidationRule NotDefault <T, TValidationRule>(this IValidationRuleLinker <T, TValidationRule> linker)
     where TValidationRule : IPropertyValidationRule <T>
 {
     return(linker.CombineWith(linker.FirstRule.Property.NotDefault()));
 }
 /// <summary>
 /// Checks that property value nullability according <see cref="INullability"/>.
 /// </summary>
 /// <typeparam name="T">Property type.</typeparam>
 /// <typeparam name="TValidationRule">Combined validation rule type.</typeparam>
 /// <param name="linker">Rule linker.</param>
 /// <param name="allowNull">Optional <see cref="INullability"/>.</param>
 /// <returns>Validation rule.</returns>
 public static TValidationRule ShouldMatchNullability <T, TValidationRule>(this IValidationRuleLinker <T, TValidationRule> linker, INullability?allowNull = null)
     where TValidationRule : IPropertyValidationRule <T>
 {
     return(linker.CombineWith(ShouldMatchNullability(linker.FirstRule.Property, allowNull)));
 }
예제 #5
0
 /// <summary>
 /// Checks that property value is in allowed values list.
 /// If <paramref name="allowedValues"/> is not set, then <see cref="SchemaExtensions.GetAllowedValues{T}"/> will be used.
 /// Set allowed values for property with one of SetAllowedValues methods.
 /// </summary>
 /// <typeparam name="T">Property type.</typeparam>
 /// <typeparam name="TValidationRule">Combined validation rule type.</typeparam>
 /// <param name="linker">Rule linker.</param>
 /// <param name="allowedValues">Optional <see cref="IAllowedValues{T}"/>.</param>
 /// <returns>Validation rule.</returns>
 public static TValidationRule OnlyAllowedValues <T, TValidationRule>(this IValidationRuleLinker <T, TValidationRule> linker, IAllowedValues <T>?allowedValues = null)
     where TValidationRule : IPropertyValidationRule <T>
 {
     return(linker.CombineWith(OnlyAllowedValues(linker.FirstRule.Property, allowedValues)));
 }