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