/// <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))); }
/// <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))); }
/// <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))); }
/// <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))); }