DybalUtilsGuards 1.0.1
dotnet add package Dybal.Utils.Guards --version 1.0.1
NuGet\Install-Package Dybal.Utils.Guards -Version 1.0.1
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的版本Install-Package。
<PackageReference Include="Dybal.Utils.Guards" Version="1.0.1" />
对于支持PackageReference的项目,请将此 XML 节点复制到项目文件中以引用包。
paket add Dybal.Utils.Guards --version 1.0.1
NuGet 团队不为此客户端提供支持。请联系其维护者以获取支持。
#r "nuget: Dybal.Utils.Guards, 1.0.1"
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。请将此内容复制到交互式工具或脚本的源代码中以引用包。
// Install Dybal.Utils.Guards as a Cake Addin #addin nuget:?package=Dybal.Utils.Guards&version=1.0.1 // Install Dybal.Utils.Guards as a Cake Tool #tool nuget:?package=Dybal.Utils.Guards&version=1.0.1
NuGet 团队不为此客户端提供支持。请联系其维护者以获取支持。
Dybal Utils Guards
Dybal Utils Guards 的主要目的是简化将输入数据检查写入对象的过程。
使您的代码尽可能易读
Foo(Guid id, string bar)
{
if(id == Guid.Empty)
{
throw new ArgumentException("Value cannot be an empty GUID.", nameof(id));
}
if(string.NotNullOrWhiteSpace(bar))
{
throw new ArgumentException("Value cannot be null or white space string.", nameof(bar));
}
if (bar < 5)
{
throw new ArgumentException($"The length of '{nameof(bar)}' must be 5 characters or more. Parameter {bar.Length} has characters.", nameof(bar));
}
if (bar > 20)
{
throw new ArgumentException($"The length of '{nameof(bar)}' must be 20 characters or fewer. Parameter {bar.Length} has characters.", nameof(bar));
}
Id = id;
Bar = bar;
}
更少的样板代码和更清晰易懂的代码
Foo(Guid id, string bar)
{
Id = Guard.Argument(id).NotDefault();
Bar = Guard.Argument(bar).NotNullOrWhiteSpace().MinLength(5).MaxLength(20);
}
如果您喜欢简码,您也可以使用它。
using static Dybal.Utils.Guards.GuardProvider;
...
Foo(Guid? id, string bar)
{
Id = Guard(id).NotDefault();
Bar = Guard(bar).NotNullOrWhiteSpace().MinLength(5).MaxLength(20);
}
或者来自 Dybal.Utils.Guards.ObjectExtensions
包的扩展方法。
Foo(Guid? id, string bar)
{
Id = id.Guard().NotDefault();
Bar = bar.Guard().NotNullOrWhiteSpace().MinLength(5).MaxLength(20);
}
文档
C# 编写的文档可能更难阅读,但它从不撒谎,而且是始终更新的。
https://github.com/martindybal/Dybal.Utils/tree/main/src/Utils/Dybal.Utils.Guards
使用示例可以在测试中找到
https://github.com/martindybal/Dybal.Utils/tree/main/src/Tests/Tests.Dybal.Utils.Guards
可扩展的
如您所见,我主要使用扩展方法。如果您缺少一个 Guard,则很容易编写一个。如果您认为它足够通用,请发送 PR。我乐意接受!
public static class CustomGuardExtensions
{
public static ArgumentGuard<int> IsNotFive(this ArgumentGuard<int> guard)
{
if (guard.Argument.Value == 5)
{
ThrowHelper.Throw<ArgumentException>(guard, "Value cannot be five.");
}
return guard;
}
}
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | 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 已计算。 |
-
net7.0
- Microsoft.CodeAnalysis.CSharp (>= 4.6.0)
NuGet包 (1)
显示依赖于Dybal.Utils.Guards的Top 1个NuGet包
包 | 下载 |
---|---|
Dybal.Utils.Guards.ObjectExtensions
扩展方法,简化从变量创建Guard的过程。 |
GitHub仓库
此包没有被任何流行的GitHub仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.0.1 | 1,683 | 11/28/2023 |
1.0.0 | 142 | 11/15/2023 |
1.0.0-pre-07 | 342 | 7/12/2023 |
1.0.0-pre-06 | 97 | 7/5/2023 |
1.0.0-pre-05 | 436 | 11/24/2022 |
1.0.0-pre-04 | 148 | 11/19/2022 |
1.0.0-pre-03 | 128 | 11/3/2022 |
1.0.0-pre-02 | 115 | 11/2/2022 |
1.0.0-pre-01 | 123 | 11/1/2022 |