MiniValidation 0.9.1
dotnet add package MiniValidation --version 0.9.1
NuGet\Install-Package MiniValidation -Version 0.9.1
这条命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="MiniValidation" Version="0.9.1" />
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中以引用此包。
paket add MiniValidation --version 0.9.1
NuGet 团队不为此客户端提供支持。请联系其 维护者 以获取支持。
#r "nuget: MiniValidation, 0.9.1"
#r 指令可以在 F# Interactive 和 Polyglot Notebooks 中使用。将此复制到交互式工具或脚本的源代码中以引用包。
// Install MiniValidation as a Cake Addin #addin nuget:?package=MiniValidation&version=0.9.1 // Install MiniValidation as a Cake Tool #tool nuget:?package=MiniValidation&version=0.9.1
NuGet 团队不为此客户端提供支持。请联系其 维护者 以获取支持。
MiniValidation
在 .NET 的 System.ComponentModel.DataAnnotations
命名空间现有功能之上构建的极简验证库。添加了对单行验证调用和带循环检测的递归的支持。
支持符合 .NET Standard 2.0 的运行时。
安装
从 NuGet 安装此库
❯ dotnet add package MiniValidation
ASP.NET Core 6+ 项目
如果要将此安装到 ASP.NET Core 6+ 项目中,建议使用 MinimalApis.Extensions 包,它添加了针对 ASP.NET Core 的扩展,包括用于 .NET 7 应用的验证端点筛选器。
❯ dotnet add package MinimalApis.Extensions
示例用法
验证对象
var widget = new Widget { Name = "" };
var isValid = MiniValidator.TryValidate(widget, out var errors);
class Widget
{
[Required, MinLength(3)]
public string Name { get; set; }
public override string ToString() => Name;
}
使用验证器服务
var widget = new Widget { Name = "" };
// Get your serviceProvider from wherever makes sense
var serviceProvider = ...
var isValid = MiniValidator.TryValidate(widget, serviceProvider, out var errors);
class Widget : IValidatableObject
{
[Required, MinLength(3)]
public string Name { get; set; }
public override string ToString() => Name;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var disallowedNamesService = validationContext.GetService(typeof(IDisallowedNamesService)) as IDisallowedNamesService;
if (disallowedNamesService is null)
{
throw new InvalidOperationException($"Validation of {nameof(Widget)} requires an {nameof(IDisallowedNamesService)} instance.");
}
if (disallowedNamesService.IsDisallowedName(Name))
{
yield return new($"Cannot name a widget '{Name}'.", new[] { nameof(Name) });
}
}
}
控制台应用程序
using System.ComponentModel.DataAnnotations;
using MiniValidation;
var title = args.Length > 0 ? args[0] : "";
var widgets = new List<Widget>
{
new Widget { Name = title },
new WidgetWithCustomValidation { Name = title }
};
foreach (var widget in widgets)
{
if (!MiniValidator.TryValidate(widget, out var errors))
{
Console.WriteLine($"{nameof(Widget)} has errors!");
foreach (var entry in errors)
{
Console.WriteLine($" {entry.Key}:");
foreach (var error in entry.Value)
{
Console.WriteLine($" - {error}");
}
}
}
else
{
Console.WriteLine($"{nameof(Widget)} '{widget}' is valid!");
}
}
class Widget
{
[Required, MinLength(3)]
public string Name { get; set; }
public override string ToString() => Name;
}
class WidgetWithCustomValidation : Widget, IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.Equals(Name, "Widget", StringComparison.OrdinalIgnoreCase))
{
yield return new($"Cannot name a widget '{Name}'.", new[] { nameof(Name) });
}
}
}
❯ widget.exe
Widget 'widget' is valid!
Widget has errors!
Name:
- Cannot name a widget 'widget'.
❯ widget.exe Ok
Widget has errors!
Name:
- The field Name must be a string or array type with a minimum length of '3'.
Widget has errors!
Name:
- The field Name must be a string or array type with a minimum length of '3'.
❯ widget.exe Widget
Widget 'Widget' is valid!
Widget has errors!
Name:
- Cannot name a widget 'Widget'.
❯ widget.exe MiniValidation
Widget 'MiniValidation' is valid!
Widget 'MiniValidation' is valid!
Web 应用程序 (.NET 6)
using System.ComponentModel.DataAnnotations;
using MiniValidation;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World");
app.MapGet("/widgets", () =>
new[] {
new Widget { Name = "Shinerizer" },
new Widget { Name = "Sparklizer" }
});
app.MapGet("/widgets/{name}", (string name) =>
new Widget { Name = name });
app.MapPost("/widgets", (Widget widget) =>
!MiniValidator.TryValidate(widget, out var errors)
? Results.ValidationProblem(errors)
: Results.Created($"/widgets/{widget.Name}", widget));
app.MapPost("/widgets/custom-validation", (WidgetWithCustomValidation widget) =>
!MiniValidator.TryValidate(widget, out var errors)
? Results.ValidationProblem(errors)
: Results.Created($"/widgets/{widget.Name}", widget));
app.Run();
class Widget
{
[Required, MinLength(3)]
public string? Name { get; set; }
public override string? ToString() => Name;
}
class WidgetWithCustomValidation : Widget, IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.Equals(Name, "Widget", StringComparison.OrdinalIgnoreCase))
{
yield return new($"Cannot name a widget '{Name}'.", new[] { nameof(Name) });
}
}
}
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
-
net6.0
- 无依赖项。
NuGet 包 (16)
显示depends on MiniValidation 的前5个NuGet包
包 | 下载 |
---|---|
Indice.AspNetCore
包描述 |
|
MinimalApis.Extensions
一组用于处理ASP.NET CoreMinimal APIs的扩展和辅助工具。 |
|
MinApiLib.Validation
Minimal API的数据注释验证过滤器 |
|
Hive.Abstractions Hive的基本抽象 |
|
Wcz.Layout
包描述 |
GitHub存储库 (3)
显示depends on MiniValidation 的最流行的3个GitHub存储库
存储库 | 星级 |
---|---|
davidfowl/TodoApi
带有ASP.NET Core Blazor WASM、Minimal APIs和身份验证的待办事项应用程序
|
|
exceptionless/Exceptionless
Exceptionless应用程序
|
|
DamianEdwards/MinimalApis.Extensions
一组用于处理ASP.NET CoreMinimal APIs的扩展和辅助工具。
|
版本 | 下载 | 最后更新 |
---|---|---|
0.9.1 | 33,990 | 4/22/2024 |
0.9.0 | 116,476 | 10/15/2023 |
0.8.0 | 183,784 | 6/22/2023 |
0.7.4 | 61,172 | 3/17/2023 |
0.7.3 | 1,117 | 3/14/2023 |
0.7.2 | 46,218 | 12/21/2022 |
0.7.1 | 1,098 | 12/20/2022 |
0.7.0 | 18,991 | 11/29/2022 |
0.6.0-pre.20220527.55 | 64,559 | 5/27/2022 |
0.5.1-pre.20220429.53 | 6,415 | 4/29/2022 |
0.5.0-pre.20220315.50 | 18,872 | 3/15/2022 |
0.4.2-pre.20220306.48 | 2,075 | 3/6/2022 |
0.4.1-pre.20220107.41 | 9,442 | 1/7/2022 |
0.4.0-pre.20211110.38 | 22,681 | 11/10/2021 |
0.3.0-pre.20210927201159.35 | 2,253 | 9/27/2021 |
0.2.0-pre.20210920234953.30 | 1,892 | 9/20/2021 |