Skip to content

Commit ea7492d

Browse files
authored
Merge pull request #233 from MADE-Apps/feature/fluentvalidation
Added FluentValidation support for validators
2 parents 0bde84a + 3ced165 commit ea7492d

File tree

21 files changed

+560
-61
lines changed

21 files changed

+560
-61
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030

3131
env:
3232
BUILD_CONFIG: 'Release'
33-
SOLUTION: 'MADE.NET.NoSamples.slnf'
33+
SOLUTION: 'MADE.NET.sln'
3434

3535
runs-on: windows-latest
3636

@@ -55,11 +55,8 @@ jobs:
5555
with:
5656
dotnet-version: 6.0.x
5757

58-
- name: Setup NuGet
59-
uses: NuGet/[email protected]
60-
6158
- name: Restore dependencies
62-
run: nuget restore $SOLUTION
59+
run: dotnet restore $SOLUTION
6360

6461
- name: Setup MSBuild
6562
uses: microsoft/[email protected]

MADE.NET.NoSamples.slnf

Lines changed: 0 additions & 26 deletions
This file was deleted.

MADE.NET.sln

Lines changed: 120 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.31624.102
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.1.32228.430
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{01380FB8-F8A7-4416-AABA-5407574B7723}"
77
EndProject
@@ -45,6 +45,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.Data.EFCore", "src\MAD
4545
EndProject
4646
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.Foundation", "src\MADE.Foundation\MADE.Foundation.csproj", "{C8DF10B0-D157-47CF-BD10-9EE1D06BEB9A}"
4747
EndProject
48+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.Data.Validation.FluentValidation", "src\MADE.Data.Validation.FluentValidation\MADE.Data.Validation.FluentValidation.csproj", "{BBAB544A-BFB2-4755-8F09-8E150D3638F3}"
49+
EndProject
50+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.Data.Validation.FluentValidation.Tests", "tests\MADE.Data.Validation.FluentValidation.Tests\MADE.Data.Validation.FluentValidation.Tests.csproj", "{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}"
51+
EndProject
4852
Global
4953
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5054
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -1141,6 +1145,118 @@ Global
11411145
{C8DF10B0-D157-47CF-BD10-9EE1D06BEB9A}.Release|x64.Build.0 = Release|Any CPU
11421146
{C8DF10B0-D157-47CF-BD10-9EE1D06BEB9A}.Release|x86.ActiveCfg = Release|Any CPU
11431147
{C8DF10B0-D157-47CF-BD10-9EE1D06BEB9A}.Release|x86.Build.0 = Release|Any CPU
1148+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
1149+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
1150+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
1151+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
1152+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU
1153+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU
1154+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
1155+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
1156+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1157+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
1158+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
1159+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
1160+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
1161+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
1162+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
1163+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|Any CPU.Build.0 = Debug|Any CPU
1164+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|ARM.ActiveCfg = Debug|Any CPU
1165+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|ARM.Build.0 = Debug|Any CPU
1166+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|ARM64.ActiveCfg = Debug|Any CPU
1167+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|ARM64.Build.0 = Debug|Any CPU
1168+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
1169+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|iPhone.Build.0 = Debug|Any CPU
1170+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1171+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
1172+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|x64.ActiveCfg = Debug|Any CPU
1173+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|x64.Build.0 = Debug|Any CPU
1174+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|x86.ActiveCfg = Debug|Any CPU
1175+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.AppStore|x86.Build.0 = Debug|Any CPU
1176+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1177+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
1178+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|ARM.ActiveCfg = Debug|Any CPU
1179+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|ARM.Build.0 = Debug|Any CPU
1180+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
1181+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|ARM64.Build.0 = Debug|Any CPU
1182+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
1183+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|iPhone.Build.0 = Debug|Any CPU
1184+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1185+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
1186+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|x64.ActiveCfg = Debug|Any CPU
1187+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|x64.Build.0 = Debug|Any CPU
1188+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|x86.ActiveCfg = Debug|Any CPU
1189+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Debug|x86.Build.0 = Debug|Any CPU
1190+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
1191+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|Any CPU.Build.0 = Release|Any CPU
1192+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|ARM.ActiveCfg = Release|Any CPU
1193+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|ARM.Build.0 = Release|Any CPU
1194+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|ARM64.ActiveCfg = Release|Any CPU
1195+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|ARM64.Build.0 = Release|Any CPU
1196+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|iPhone.ActiveCfg = Release|Any CPU
1197+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|iPhone.Build.0 = Release|Any CPU
1198+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
1199+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
1200+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|x64.ActiveCfg = Release|Any CPU
1201+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|x64.Build.0 = Release|Any CPU
1202+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|x86.ActiveCfg = Release|Any CPU
1203+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3}.Release|x86.Build.0 = Release|Any CPU
1204+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
1205+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
1206+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
1207+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
1208+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU
1209+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU
1210+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
1211+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
1212+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1213+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
1214+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
1215+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
1216+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
1217+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
1218+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
1219+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|Any CPU.Build.0 = Debug|Any CPU
1220+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|ARM.ActiveCfg = Debug|Any CPU
1221+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|ARM.Build.0 = Debug|Any CPU
1222+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|ARM64.ActiveCfg = Debug|Any CPU
1223+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|ARM64.Build.0 = Debug|Any CPU
1224+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
1225+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|iPhone.Build.0 = Debug|Any CPU
1226+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1227+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
1228+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|x64.ActiveCfg = Debug|Any CPU
1229+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|x64.Build.0 = Debug|Any CPU
1230+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|x86.ActiveCfg = Debug|Any CPU
1231+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.AppStore|x86.Build.0 = Debug|Any CPU
1232+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1233+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
1234+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|ARM.ActiveCfg = Debug|Any CPU
1235+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|ARM.Build.0 = Debug|Any CPU
1236+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
1237+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|ARM64.Build.0 = Debug|Any CPU
1238+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
1239+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|iPhone.Build.0 = Debug|Any CPU
1240+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
1241+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
1242+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|x64.ActiveCfg = Debug|Any CPU
1243+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|x64.Build.0 = Debug|Any CPU
1244+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|x86.ActiveCfg = Debug|Any CPU
1245+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Debug|x86.Build.0 = Debug|Any CPU
1246+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
1247+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|Any CPU.Build.0 = Release|Any CPU
1248+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|ARM.ActiveCfg = Release|Any CPU
1249+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|ARM.Build.0 = Release|Any CPU
1250+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|ARM64.ActiveCfg = Release|Any CPU
1251+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|ARM64.Build.0 = Release|Any CPU
1252+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|iPhone.ActiveCfg = Release|Any CPU
1253+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|iPhone.Build.0 = Release|Any CPU
1254+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
1255+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
1256+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|x64.ActiveCfg = Release|Any CPU
1257+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|x64.Build.0 = Release|Any CPU
1258+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|x86.ActiveCfg = Release|Any CPU
1259+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E}.Release|x86.Build.0 = Release|Any CPU
11441260
EndGlobalSection
11451261
GlobalSection(SolutionProperties) = preSolution
11461262
HideSolutionNode = FALSE
@@ -1165,6 +1281,8 @@ Global
11651281
{1CDB43BD-71F9-46C6-816C-4EFC9FA2ED1C} = {69149D0F-BB09-411B-88F0-A1E845058D70}
11661282
{3A5D7EA4-5AD9-4D34-87E6-B34416CA928E} = {01380FB8-F8A7-4416-AABA-5407574B7723}
11671283
{C8DF10B0-D157-47CF-BD10-9EE1D06BEB9A} = {01380FB8-F8A7-4416-AABA-5407574B7723}
1284+
{BBAB544A-BFB2-4755-8F09-8E150D3638F3} = {01380FB8-F8A7-4416-AABA-5407574B7723}
1285+
{D8C1B3CC-B5BA-4946-944E-D898AB4DFF6E} = {69149D0F-BB09-411B-88F0-A1E845058D70}
11681286
EndGlobalSection
11691287
GlobalSection(ExtensibilityGlobals) = postSolution
11701288
SolutionGuid = {3921AD86-E6C0-4436-8880-2D9EDFAD6151}

docs/articles/features/data-validation.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ title: Using the Data Validation package
55

66
# Using the Data Validation package
77

8-
The Data Validation package is designed to provide out-of-the-box data validation to applications built with C#.
8+
The Data Validation package is designed to provide out-of-the-box data validation to applications built with C#.
99

1010
## Validating an object using the ValidatorCollection
1111

1212
Data validation can be implemented in so many different ways. MADE provides the capability to perform data validation through its own `IValidator` interface that can be used to create consistent data validators.
1313

1414
Using the `MADE.Data.Validation.ValidatorCollection` based on a `List` type, you can construct a collection of `IValidator` instances which can be used to validate values.
1515

16-
For example, you might want a collection of validators that ensure that a value is provided, it has a minimum length, and it contains only alphanumeric characters.
16+
For example, you might want a collection of validators that ensure that a value is provided, it has a minimum length, and it contains only alphanumeric characters.
1717

1818
Instead of implementing your own custom validation in your application, you can take advantage of the built-in `IValidator` implementation of this package and utilize them with the `ValidatorCollection`.
1919

@@ -102,15 +102,15 @@ The implementation splits the IP address into each nibble and validates them bas
102102

103103
### MaxValueValidator
104104

105-
The `MaxValueValidator` validates an `IComparable` value is less than a configurable maximum value.
105+
The `MaxValueValidator` validates an `IComparable` value is less than a configurable maximum value.
106106

107107
The maximum can be configured by setting the `Max` value.
108108

109109
The in-box `System` types which implement the `IComparable` interface can be [found in the Microsoft documentation](https://docs.microsoft.com/en-us/dotnet/api/system.icomparable?view=net-5.0).
110110

111111
### MinValueValidator
112112

113-
The `MinValueValidator` validates an `IComparable` value is greater than a configurable minimum value.
113+
The `MinValueValidator` validates an `IComparable` value is greater than a configurable minimum value.
114114

115115
The minimum can be configured by setting the `Min` value.
116116

@@ -191,3 +191,13 @@ namespace MADE.Data.Validation.Validators
191191
```
192192

193193
If there is a common data validator you think is missing from MADE.NET, [raise a tracking item on GitHub](https://github.com/MADE-Apps/MADE.NET/issues/new/choose) and we'll get it implemented.
194+
195+
## Using FluentValidation with MADE.NET
196+
197+
The `MADE.Data.Validation.FluentValidation` package provides an easy way to take advantage of validation with the [FluentValidation](https://fluentvalidation.net/) library validator framework.
198+
199+
### Validating an object using the FluentValidatorCollection
200+
201+
Using the `MADE.Data.Validation.FluentValidatorCollection<T>` based on a `List` type, you can construct a collection of `AbstractValidator` instances which can be used to validate values.
202+
203+
This way, you can bring FluentValidation's out-of-the-box validators or your own custom validators based on the `AbstractValidator` type and get all the benefits of using the existing MADE.NET validation framework. This is great for example with input validator controls that currently support the MADE.NET validation framework!

docs/articles/intro.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dotnet add package MADE.Collections
2929
| MADE.Data.Converters | [![NuGet](https://img.shields.io/nuget/v/MADE.Data.Converters)](https://www.nuget.org/packages/MADE.Data.Converters/) |
3030
| MADE.Data.EFCore | [![NuGet](https://img.shields.io/nuget/v/MADE.Data.EFCore)](https://www.nuget.org/packages/MADE.Data.EFCore/) |
3131
| MADE.Data.Validation | [![NuGet](https://img.shields.io/nuget/v/MADE.Data.Validation)](https://www.nuget.org/packages/MADE.Data.Validation/) |
32+
| MADE.Data.Validation.FluentValidation | [![NuGet](https://img.shields.io/nuget/v/MADE.Data.Validation.FluentValidation)](https://www.nuget.org/packages/MADE.Data.Validation.FluentValidation/) |
3233
| MADE.Diagnostics | [![NuGet](https://img.shields.io/nuget/v/MADE.Diagnostics)](https://www.nuget.org/packages/MADE.Diagnostics/) |
3334
| MADE.Media.Image | [![NuGet](https://img.shields.io/nuget/v/MADE.Media.Image)](https://www.nuget.org/packages/MADE.Media.Image/) |
3435
| MADE.Networking | [![NuGet](https://img.shields.io/nuget/v/MADE.Networking)](https://www.nuget.org/packages/MADE.Networking/) |

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ title: Make App Development Easier
106106
<div class="stat-container">
107107
<div class="stat-header">
108108
<span>
109-
v1.4.0
109+
v1.5.0
110110
</span>
111111
</div>
112112
<div class="stat-content">
@@ -122,7 +122,7 @@ title: Make App Development Easier
122122
<div class="stat-container">
123123
<div class="stat-header">
124124
<span>
125-
225k+
125+
275k+
126126
</span>
127127
</div>
128128
<div class="stat-content">

src/MADE.Collections/MADE.Collections.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="MSBuild.Sdk.Extras">
22

33
<PropertyGroup>
4-
<TargetFrameworks>uap10.0.17763;netstandard2.0</TargetFrameworks>
4+
<TargetFramework>netstandard2.0</TargetFramework>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
66
<Product>MADE.NET Collections</Product>
77
<Description>

0 commit comments

Comments
 (0)