gitextract_6qgujrz3/ ├── .editorconfig ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── README.md │ ├── pull_request_template.md │ └── workflows/ │ ├── CI.yml │ └── Init-WorkflowVariables.ps1 ├── .gitignore ├── .nuke/ │ ├── build.schema.json │ └── parameters.json ├── LICENSE ├── Validot.sln ├── build/ │ ├── .editorconfig │ ├── Build.cs │ ├── Configuration.cs │ ├── _build.csproj │ └── _build.csproj.DotSettings ├── build.cmd ├── build.ps1 ├── build.sh ├── docs/ │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── DOCUMENTATION.md │ └── articles/ │ ├── crafting-model-specifications-using-validot.md │ └── validots-performance-explained.md ├── nuget.config ├── src/ │ └── Validot/ │ ├── CodeHelper.cs │ ├── Errors/ │ │ ├── Args/ │ │ │ ├── ArgHelper.cs │ │ │ ├── ArgPlaceholder.cs │ │ │ ├── EnumArg.cs │ │ │ ├── EnumArgFactory.cs │ │ │ ├── GuidArg.cs │ │ │ ├── GuidArgFactory.cs │ │ │ ├── IArg.cs │ │ │ ├── NameArg.cs │ │ │ ├── NumberArg.cs │ │ │ ├── NumberArgFactory.cs │ │ │ ├── TextArg.cs │ │ │ ├── TextArgFactory.cs │ │ │ ├── TimeArg.cs │ │ │ ├── TimeArgFactory.cs │ │ │ ├── TranslationArg.cs │ │ │ ├── TypeArg.cs │ │ │ └── TypeArgFactory.cs │ │ ├── CacheIntegrityException.cs │ │ ├── Error.cs │ │ ├── IError.cs │ │ ├── IMessageService.cs │ │ ├── MessageCache.cs │ │ ├── MessageService.cs │ │ ├── ReferenceLoopError.cs │ │ └── Translator/ │ │ ├── MessageTranslator.cs │ │ └── TranslationResult.cs │ ├── Factory/ │ │ ├── HolderInfo.cs │ │ ├── ISettingsHolder.cs │ │ ├── ISpecificationHolder.cs │ │ └── ValidatorFactory.cs │ ├── IValidator.cs │ ├── PathHelper.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Results/ │ │ ├── IValidationResult.cs │ │ └── ValidationResult.cs │ ├── Rules/ │ │ ├── BoolRules.cs │ │ ├── CharRules.cs │ │ ├── Collections/ │ │ │ ├── ArrayRules.cs │ │ │ ├── BaseCollectionRules.cs │ │ │ ├── IEnumerableRules.cs │ │ │ ├── IListRules.cs │ │ │ ├── IReadOnlyCollectionRules.cs │ │ │ ├── IReadOnlyListRules.cs │ │ │ └── ListRules.cs │ │ ├── GuidRules.cs │ │ ├── Numbers/ │ │ │ ├── ByteRules.cs │ │ │ ├── CharNumbersRules.cs │ │ │ ├── DecimalRules.cs │ │ │ ├── DoubleRules.cs │ │ │ ├── FloatRules.cs │ │ │ ├── IntRules.cs │ │ │ ├── LongRules.cs │ │ │ ├── SByteRules.cs │ │ │ ├── ShortRules.cs │ │ │ ├── UIntRules.cs │ │ │ ├── ULongRules.cs │ │ │ └── UShortRules.cs │ │ ├── Text/ │ │ │ ├── EmailRules.cs │ │ │ ├── EmailValidationMode.cs │ │ │ └── StringRules.cs │ │ ├── TimeSpanRules.cs │ │ └── Times/ │ │ ├── DateTimeFormats.cs │ │ ├── DateTimeOffsetRules.cs │ │ ├── DateTimeRules.cs │ │ ├── TimeComparer.cs │ │ └── TimeComparison.cs │ ├── Settings/ │ │ ├── IValidatorSettings.cs │ │ ├── ValidatorSettings.cs │ │ └── ValidatorSettingsExtensions.cs │ ├── Specification/ │ │ ├── AndExtension.cs │ │ ├── AsCollectionExtension.cs │ │ ├── AsConvertedExtension.cs │ │ ├── AsDictionaryExtension.cs │ │ ├── AsDictionaryWithStringKeyExtension.cs │ │ ├── AsModelExtension.cs │ │ ├── AsNullableExtension.cs │ │ ├── AsTypeExtension.cs │ │ ├── Commands/ │ │ │ ├── AsCollectionCommand.cs │ │ │ ├── AsConvertedCommand.cs │ │ │ ├── AsDictionaryCommand.cs │ │ │ ├── AsModelCommand.cs │ │ │ ├── AsNullableCommand.cs │ │ │ ├── AsTypeCommand.cs │ │ │ ├── ForbiddenCommand.cs │ │ │ ├── ICommand.cs │ │ │ ├── IScopeCommand.cs │ │ │ ├── MemberCommand.cs │ │ │ ├── OptionalCommand.cs │ │ │ ├── RequiredCommand.cs │ │ │ ├── RuleCommand.cs │ │ │ ├── WithCodeCommand.cs │ │ │ ├── WithConditionCommand.cs │ │ │ ├── WithExtraCodeCommand.cs │ │ │ ├── WithExtraMessageCommand.cs │ │ │ ├── WithMessageCommand.cs │ │ │ └── WithPathCommand.cs │ │ ├── ForbiddenExtension.cs │ │ ├── MemberExtension.cs │ │ ├── OptionalExtension.cs │ │ ├── RequiredExtension.cs │ │ ├── RuleExtension.cs │ │ ├── Specification.cs │ │ ├── SpecificationApi.cs │ │ ├── WithCodeExtension.cs │ │ ├── WithConditionExtension.cs │ │ ├── WithExtraCodeExtension.cs │ │ ├── WithExtraMessageExtension.cs │ │ ├── WithMessageExtension.cs │ │ └── WithPathExtension.cs │ ├── Testing/ │ │ ├── TestFailedException.cs │ │ ├── TestResult.cs │ │ ├── Tester.cs │ │ └── ToStringContentType.cs │ ├── ThrowHelper.cs │ ├── Translations/ │ │ ├── Chinese/ │ │ │ ├── ChineseTranslation.cs │ │ │ └── ChineseTranslationsExtensions.cs │ │ ├── English/ │ │ │ ├── EnglishTranslation.cs │ │ │ └── EnglishTranslationsExtensions.cs │ │ ├── German/ │ │ │ ├── GermanTranslation.cs │ │ │ └── GermanTranslationsExtensions.cs │ │ ├── ITranslationCompiler.cs │ │ ├── MessageKey.cs │ │ ├── Polish/ │ │ │ ├── PolishTranslation.cs │ │ │ └── PolishTranslationsExtensions.cs │ │ ├── Portuguese/ │ │ │ ├── PortugueseTranslation.cs │ │ │ └── PortugueseTranslationsExtensions.cs │ │ ├── Russian/ │ │ │ ├── RussianTranslation.cs │ │ │ └── RussianTranslationsExtensions.cs │ │ ├── Spanish/ │ │ │ ├── SpanishTranslation.cs │ │ │ └── SpanishTranslationsExtensions.cs │ │ ├── TranslationCompiler.cs │ │ └── _Template/ │ │ ├── _TemplateTranslation.cs.txt │ │ └── _TemplateTranslationsExtensions.cs.txt │ ├── TypeStringifier.cs │ ├── Validation/ │ │ ├── DiscoveryContext.cs │ │ ├── ErrorFlag.cs │ │ ├── IDiscoveryContext.cs │ │ ├── IDiscoveryContextActions.cs │ │ ├── IErrorsHolder.cs │ │ ├── IValidationContext.cs │ │ ├── IsValidValidationContext.cs │ │ ├── Scheme/ │ │ │ ├── IModelScheme.cs │ │ │ ├── ModelScheme.cs │ │ │ └── ModelSchemeFactory.cs │ │ ├── Scopes/ │ │ │ ├── Builders/ │ │ │ │ ├── CommandScopeBuilder.cs │ │ │ │ ├── ErrorBuilder.cs │ │ │ │ ├── ErrorMode.cs │ │ │ │ ├── ICommandScopeBuilder.cs │ │ │ │ ├── IScopeBuilderContext.cs │ │ │ │ ├── RuleCommandScopeBuilder.cs │ │ │ │ ├── ScopeBuilder.cs │ │ │ │ └── ScopeBuilderContext.cs │ │ │ ├── CollectionCommandScope.cs │ │ │ ├── CommandScope.cs │ │ │ ├── ConvertedCommandScope.cs │ │ │ ├── DictionaryCommandScope.cs │ │ │ ├── ICommandScope.cs │ │ │ ├── IDiscoverable.cs │ │ │ ├── IScope.cs │ │ │ ├── ISpecificationScope.cs │ │ │ ├── IValidatable.cs │ │ │ ├── MemberCommandScope.cs │ │ │ ├── ModelCommandScope.cs │ │ │ ├── NullableCommandScope.cs │ │ │ ├── Presence.cs │ │ │ ├── RuleCommandScope.cs │ │ │ ├── SpecificationScope.cs │ │ │ └── TypeCommandScope.cs │ │ ├── Stacks/ │ │ │ ├── PathStack.cs │ │ │ ├── ReferenceLoopException.cs │ │ │ ├── ReferenceLoopProtectionSettings.cs │ │ │ └── ReferencesStack.cs │ │ └── ValidationContext.cs │ ├── Validator.cs │ ├── Validot.csproj │ └── ValidotException.cs └── tests/ ├── AssemblyWithHolders/ │ ├── AssemblyWithHolders.csproj │ ├── AssemblyWithHoldersHook.cs │ ├── HolderOfDecimalSpecification.cs │ ├── HolderOfIntSpecificationAndSettings.cs │ ├── HolderOfMultipleSpecifications.cs │ ├── HolderOfMultipleSpecificationsAndSettings.cs │ ├── HolderOfStringSpecification.cs │ ├── HolderOfStringSpecificationAndSettings.cs │ ├── NestedHolders.cs │ ├── PrivateSpecificationAndSettingsHolder.cs │ ├── PrivateSpecificationHolder.cs │ └── Properties/ │ └── AssemblyInfo.cs ├── Validot.Benchmarks/ │ ├── .editorconfig │ ├── Comparisons/ │ │ ├── ComparisonDataSet.cs │ │ ├── EngineOnlyBenchmark.cs │ │ ├── InitializationBenchmark.cs │ │ ├── ReportingBenchmark.cs │ │ ├── ToStringBenchmark.cs │ │ └── ValidationBenchmark.cs │ ├── EmailModesBenchmark.cs │ ├── Program.cs │ └── Validot.Benchmarks.csproj ├── Validot.MemoryLeak/ │ ├── .editorconfig │ ├── Program.cs │ ├── StreamDataSet.cs │ ├── Validot.MemoryLeak.csproj │ └── Validot.MemoryLeak.dockerfile ├── Validot.Tests.Functional/ │ ├── .editorconfig │ ├── ConcurrencyFuncTests.cs │ ├── Documentation/ │ │ ├── CustomRulesFuncTests.cs │ │ ├── ErrorOutputFuncTests.cs │ │ ├── FactoryFuncTests.cs │ │ ├── FluentApiFuncTests.cs │ │ ├── MessageArgumentsFuncTests.cs │ │ ├── Models/ │ │ │ ├── A.cs │ │ │ ├── AuthorModel.cs │ │ │ ├── B.cs │ │ │ ├── BookModel.cs │ │ │ ├── Language.cs │ │ │ └── PublisherModel.cs │ │ ├── ParameterCommandsFuncTests.cs │ │ ├── PresenceCommandsFuncTests.cs │ │ ├── ReferenceLoopFuncTests.cs │ │ ├── ResultFuncTests.cs │ │ ├── ScopeCommandsFuncTests.cs │ │ ├── SettingsFuncTests.cs │ │ ├── SpecificationFuncTests.cs │ │ ├── TranslationsFuncTests.cs │ │ └── ValidatorFuncTests.cs │ ├── Readme/ │ │ ├── FeaturesFuncTests.cs │ │ └── QuickStartFuncTests.cs │ └── Validot.Tests.Functional.csproj └── Validot.Tests.Unit/ ├── .editorconfig ├── CodeHelperTests.cs ├── ErrorContentApiHelper.cs ├── ErrorSetupApiHelper.cs ├── Errors/ │ ├── Args/ │ │ ├── ArgHelperTests.cs │ │ ├── EnumArgTests.cs │ │ ├── GuidArgTests.cs │ │ ├── NameArgTests.cs │ │ ├── NumberArgTests.cs │ │ ├── TextArgTests.cs │ │ ├── TimeArgTests.cs │ │ ├── TranslationArgTests.cs │ │ └── TypeArgTests.cs │ ├── MessageCacheTests.cs │ ├── MessageServiceTests.cs │ ├── ReferenceLoopErrorTests.cs │ └── Translator/ │ └── MessageTranslatorTests.cs ├── Factory/ │ ├── HolderInfoTests.cs │ └── ValidatorFactoryTests.cs ├── GuardTests.cs ├── PathHelperTests.cs ├── PathTestData.cs ├── Results/ │ └── ValidationResultTests.cs ├── Rules/ │ ├── BoolRulesTests.cs │ ├── CharRulesTests.cs │ ├── Collections/ │ │ ├── ArrayRulesTests.cs │ │ ├── BaseCollectionRulesTests.cs │ │ ├── CollectionsTestData.cs │ │ ├── IEnumerableRulesTests.cs │ │ ├── IListRulesTests.cs │ │ ├── IReadOnlyCollectionRulesTests.cs │ │ ├── IReadOnlyListRulesTests.cs │ │ └── ListRulesTests.cs │ ├── GuidRulesTests.cs │ ├── Numbers/ │ │ ├── ByteRulesTests.cs │ │ ├── CharNumbersRulesTests.cs │ │ ├── DecimalRulesTests.cs │ │ ├── DoubleRulesTests.cs │ │ ├── FloatRulesTests.cs │ │ ├── IntRulesTests.cs │ │ ├── LongRulesTests.cs │ │ ├── NumbersTestData.cs │ │ ├── SByteRulesTests.cs │ │ ├── ShortRulesTests.cs │ │ ├── UIntRulesTests.cs │ │ ├── ULongRulesTests.cs │ │ └── UShortRulesTests.cs │ ├── RulesHelper.cs │ ├── Text/ │ │ ├── CharRulesTests.cs │ │ ├── EmailRulesTests.cs │ │ └── StringRulesTests.cs │ ├── TimeSpanRulesTests.cs │ └── Times/ │ ├── DateTimeOffsetRulesTests.cs │ ├── DateTimeRulesTests.cs │ └── TimesTestData.cs ├── Settings/ │ ├── ValidatorSettingsExtensionsTests.cs │ ├── ValidatorSettingsTestHelpers.cs │ └── ValidatorSettingsTests.cs ├── Specification/ │ ├── AndExtensionTests.cs │ ├── ApiTester.cs │ ├── AsCollectionExtensionTests.cs │ ├── AsConvertedExtensionTests.cs │ ├── AsDictionaryExtensionTests.cs │ ├── AsDictionaryWithKeyStringExtensionTests.cs │ ├── AsModelExtensionTests.cs │ ├── AsNullableExtensionTests.cs │ ├── AsTypeExtensionTests.cs │ ├── Commands/ │ │ ├── AsCollectionCommandTests.cs │ │ ├── AsConvertedCommandTests.cs │ │ ├── AsDictionaryCommandTests.cs │ │ ├── AsModelCommandTests.cs │ │ ├── AsNullableCommandTests.cs │ │ ├── AsTypeCommandTests.cs │ │ ├── MemberCommandTests.cs │ │ └── RuleCommandTests.cs │ ├── ForbiddenExtensionTests.cs │ ├── MemberExtensionTests.cs │ ├── OptionalExtensionTests.cs │ ├── RequiredExtensionTests.cs │ ├── RuleExtensionTests.cs │ ├── WithCodeExtensionTests.cs │ ├── WithConditionExtensionTests.cs │ ├── WithExtraCodeExtensionTests.cs │ ├── WithExtraMessageExtensionTests.cs │ ├── WithMessageExtensionTests.cs │ └── WithPathExtensionTests.cs ├── TempTests.cs ├── Testing/ │ └── TesterTests.cs ├── Translations/ │ ├── Chinese/ │ │ └── ChineseTranslationsExtensionsTests.cs │ ├── English/ │ │ └── EnglishTranslationsExtensionsTests.cs │ ├── German/ │ │ └── GermanTranslationsExtensionsTests.cs │ ├── MessageKeyTests.cs │ ├── Polish/ │ │ └── PolishTranslationsExtensionsTests.cs │ ├── Portuguese/ │ │ └── PortugueseTranslationsExtensionsTests.cs │ ├── Russian/ │ │ └── RussianTranslationsExtensionsTests.cs │ ├── Spanish/ │ │ └── SpanishTranslationsExtensionsTests.cs │ ├── TranslationCompilerTests.cs │ ├── TranslationTestHelpers.cs │ └── _Template/ │ └── _TemplateTranslationsExtensionsTests.cs.txt ├── TypeStringifierTests.cs ├── Validation/ │ ├── DiscoveryContextTests.cs │ ├── ErrorFlagTests.cs │ ├── IsValidValidationContextTests.cs │ ├── Scheme/ │ │ ├── ModelSchemeFactoryTests.cs │ │ └── ModelSchemeTests.cs │ ├── Scopes/ │ │ ├── Builders/ │ │ │ ├── CommandScopeBuilderTests.cs │ │ │ ├── ErrorBuilderTestData.cs │ │ │ ├── ErrorBuilderTests.cs │ │ │ ├── ErrorTestsHelpers.cs │ │ │ ├── RuleCommandScopeBuilderTests.cs │ │ │ ├── ScopeBuilderContextTests.cs │ │ │ └── ScopeBuilderTests.cs │ │ ├── CollectionCommandScopeTests.cs │ │ ├── CommandScopeTestHelper.cs │ │ ├── ConvertedCommandScopeTests.cs │ │ ├── DictionaryCommandScopeTests.cs │ │ ├── MemberCommandScopeTests.cs │ │ ├── ModelCommandScopeTests.cs │ │ ├── NullableCommandScopeTests.cs │ │ ├── RuleCommandScopeTests.cs │ │ └── SpecificationScopeTests.cs │ ├── Stack/ │ │ ├── PathStackTests.cs │ │ ├── ReferenceLoopExceptionTests.cs │ │ ├── ReferenceLoopProtectionSettingsTests.cs │ │ └── ReferencesStackTests.cs │ ├── TraversingTestCases.cs │ └── ValidationContextTests.cs ├── ValidationTestData.cs ├── ValidationTestHelpers.cs ├── ValidatorTests.cs ├── Validot.Tests.Unit.csproj └── ValidotExceptionTests.cs