// Required Nullable Collection public static NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, TValueValidator, TValue[]> Add <TValueValidator, TValue>(this RequiredCollectionNullableStateValidator <TValue> requiredCollection, TValueValidator valueValidator) where TValueValidator : IValueValidator <TValue[]> => new NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, TValueValidator, TValue[]>(requiredCollection, valueValidator);
public static NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, ItemCountValidator <TValue>, TValue[]> ItemCount <TValue>(this RequiredCollectionNullableStateValidator <TValue> source, int?minimumItems = null, int?maximumItems = null) => source.Add(new ItemCountValidator <TValue>(minimumItems, maximumItems));
public static NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, CustomValidator <TValue[]>, TValue[]> Assert <TValue>(this RequiredCollectionNullableStateValidator <TValue> source, string description, Func <TValue[], bool> validator) => source.Add(new CustomValidator <TValue[]>(description, validator));
public static NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, UniqueValidator <TValue>, TValue[]> Unique <TValue>(this RequiredCollectionNullableStateValidator <TValue> source) => source.Add(new UniqueValidator <TValue>());
public static NullableDataSourceInverted <RequiredCollectionNullableStateValidator <TValue>, TValueValidator, TValue[]> Not <TValueValidator, TValue>(this RequiredCollectionNullableStateValidator <TValue> source, Func <RequiredCollectionNullableStateValidator <TValue>, NullableDataSourceStandard <RequiredCollectionNullableStateValidator <TValue>, TValueValidator, TValue[]> > validatorFactory) where TValueValidator : IValueValidator <TValue[]> => validatorFactory.Invoke(source).InvertOne();