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                
#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                

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 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于目标框架.NET Standard的信息。

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