.NET 帮助

Flunt C#(如何为开发者工作)

发布 2024年六月6日
分享:

简介

在当前的软件开发环境中,制作高质量的文档和保证数据的完整性是必不可少的任务。在本篇文章中,我们将探讨如何结合强大的 C# 库、Flunt C# 和 IronPDF 来改进数据验证和文档创建的工作流程。开发人员可以构建有效、可靠的解决方案,以满足以下各种需求 应用 利用 IronPDF 复杂的 PDF 制作功能和 Flunt 强大的验证功能。

如何在 C&num 中使用 Flunt;

1.创建一个新的 C# 控制台项目。

2.从 Nuget 安装 Flunt 软件包。

3.导入命名空间并继承该类。

4.在数据模型中添加验证。

5.执行验证检查并显示结果。

了解 Flunt C#

多功能、轻量级的.NET 框架 Flunt 是为促进 C# 应用程序中流畅的验证和通知模式的开发而创建的。当开发人员使用 Flunt 以流畅和富有表现力的方式构建验证规则和业务逻辑时,代码会变得更加清晰易读,维护性也更强。借助 Flunt 广泛的集成验证技术和扩展功能,开发人员可以轻松验证对象和集合等复杂的数据结构。

此外,Flunt 还是提高.NET 库应用程序可靠性和健壮性的有用工具,因为它能与当前的代码库和框架轻松集成。总之,Flunt 鼓励采用声明式方法进行验证和错误处理,使开发人员能够编写出更简洁、更健壮的代码。

Flunt C&num 的功能;

流畅的界面: Flunt 为建立验证规则提供了一个清晰简洁的界面,简化了复杂验证逻辑的表达。

可链式验证: 通过自然连接验证规则,只需少量代码即可创建可链式验证方案。

集成验证器: Flunt 为常用数据类型提供了多种内置验证器,包括日期、整数、字符串和集合。通过流畅的语法,可以轻松地将这些验证器应用到属性中。

自定义验证规则: 通过扩展 Flunt 框架,开发人员可以添加自定义验证规则,使验证逻辑适应特定领域的要求。

通知系统: 为报告验证问题和收集错误信息,Flunt 提供了一个通知系统。这样,开发人员就能轻松通知用户或其他应用程序组件验证失败。

与框架集成: Flunt能轻松地与包括实体框架(Entity Framework)和ASP.NET Core在内的知名框架和库相连接,从而能简单地将验证逻辑添加到已有的项目中。

可测试性: Flunt有利于测试驱动开发 (TDD) 通过在应用程序代码和验证逻辑之间进行明确划分,使单元测试验证规则变得简单。

开源和蓬勃发展的社区:一群开发人员积极维护 Flunt,使其成为开源软件。这保证了对框架的持续维护、改进和支持。

Flunt C&num 入门;

在 C&num 中设置 Flunt;项目

通知和验证命名空间是 Flunt 基类库的一部分,在您的 C# 项目中应该可以默认访问。Flunt 为定义和应用验证规则提供了灵活的接口,从而加速了 C# 程序的验证。它支持更简洁的代码、更强的可读性和全面的错误处理,使验证用户输入、域对象和 API 请求变得更容易。

在 Windows 控制台和窗体中实施 Flunt

许多 C# 应用程序类型都实现了 Flunt,包括 Windows 控制台、Web 应用程序和 Windows 窗体。 (WinForms).虽然每个框架的实现方式不同,但总体概念始终如一。

Flunt C#(如何为开发人员工作):图 1 - 使用 Visual Studio 软件包管理器搜索 Flunt 并安装

Flunt C# 示例

一旦安装了 Flunt,您就可以使用下面的代码。这是一个简单的示例,向您展示了如何使用 Flunt 构建验证规则:

using Flunt.Validations;
static void Main(string[] args)
{
    var person = new Person { Name = "Jack", Age = -25 };
    var contract = new PersonContract(person);
    // validation checks
    if (contract.IsValid)
    {
        Console.WriteLine("Person is valid!");
    }
    else
    {
            Console.WriteLine("Validation failed:");
            foreach (var notification in contract.Notifications)
            {
                Console.WriteLine($"- {notification.Key}:{notification.Message}");
            }
    }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonContract : Contract<Person>
{
public PersonContract(Person person)
    {
        // ensure the correct format of the object
        Requires()
            .IsNotNull(person, nameof(person))
        .IsNotEmpty(person.Name, nameof(person.Name), "Name is required")
            .IsGreaterThan(person.Age, 0, nameof(person.Age), "Age must be a positive number");
    }
}
using Flunt.Validations;
static void Main(string[] args)
{
    var person = new Person { Name = "Jack", Age = -25 };
    var contract = new PersonContract(person);
    // validation checks
    if (contract.IsValid)
    {
        Console.WriteLine("Person is valid!");
    }
    else
    {
            Console.WriteLine("Validation failed:");
            foreach (var notification in contract.Notifications)
            {
                Console.WriteLine($"- {notification.Key}:{notification.Message}");
            }
    }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonContract : Contract<Person>
{
public PersonContract(Person person)
    {
        // ensure the correct format of the object
        Requires()
            .IsNotNull(person, nameof(person))
        .IsNotEmpty(person.Name, nameof(person.Name), "Name is required")
            .IsGreaterThan(person.Age, 0, nameof(person.Age), "Age must be a positive number");
    }
}
Imports Flunt.Validations
Shared Sub Main(ByVal args() As String)
	Dim person As New Person With {
		.Name = "Jack",
		.Age = -25
	}
	Dim contract = New PersonContract(person)
	' validation checks
	If contract.IsValid Then
		Console.WriteLine("Person is valid!")
	Else
			Console.WriteLine("Validation failed:")
			For Each notification In contract.Notifications
				Console.WriteLine($"- {notification.Key}:{notification.Message}")
			Next notification
	End If
End Sub
Public Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
Public Class PersonContract
	Inherits Contract(Of Person)

Public Sub New(ByVal person As Person)
		' ensure the correct format of the object
		Requires().IsNotNull(person, NameOf(person)).IsNotEmpty(person.Name, NameOf(person.Name), "Name is required").IsGreaterThan(person.Age, 0, NameOf(person.Age), "Age must be a positive number")
End Sub
End Class
VB   C#

Person 类:FluentValidation 示例中的相同。

PersonContract: 该类源自 Flunt 的基本概念 Contract.Verifications。通过使用 Requires 方法,构造函数接收一个 Person 对象并提供验证规则。Requires 提供了一种可链式方法,用于添加多个验证。验证由 IsNotNullNotEmptyHasMinLengthIsGreaterThan 等方法执行。每个验证规则都有个性化的错误信息。

验证:FluentValidation.Together 对象的示例类似,它会创建一个 PersonContract 实例和一个 Person 对象。验证结果由合约的 Valid 属性显示。根据验证结果,将显示成功或失败通知以及特定的错误细节。

Flunt Operations

对于 C# 应用程序中的验证和通知处理,Flunt 提供了许多操作,例如

创建验证规则: 要为强制字段、数据类型、值范围、最大长度和最小长度等属性创建验证规则,请使用流畅接口。

执行验证:为保证数据的完整性和与业务逻辑的一致性,可根据预定义规则验证对象。

管理验证错误: 将验证错误作为警报记录下来,并通过向用户提供错误信息或记录错误以便排除故障的方式,对错误做出礼貌的回应。个性化验证逻辑 使用独特的验证规则来扩展 Flunt,以应对复杂的验证情况或特定领域的要求。

与框架集成: 为提高当前应用程序的验证能力,Flunt可与许多著名的.NET框架和库无缝集成,包括实体框架、ASP.NET Core等。

整合 Flunt 与 IronPDF

通过将 Flunt 与 IronPDF 集成,开发人员可以利用这两种技术的优势,加快 C# 应用程序中的业务逻辑验证和文档创建。开发人员可以在使用 Flunt 验证输入数据后,使用 IronPDF 创建 PDF 文档,从而使应用程序更加可靠、可信和用户友好。

安装 IronPDF

  • 启动 Visual Studio 项目。
  • 选择 "工具">"NuGet 包管理器">"包管理器控制台"。

  • 在软件包管理器控制台中输入此命令:
Install-Package IronPdf
  • 作为替代方法,您可以使用 NuGet Package Manager for Solutions 安装 IronPDF 和其他必要的 NuGet 包。
  • 探索并从搜索结果中选择 IronPDF 软件包后,点击 "安装 "按钮。Visual Studio 将负责安装和下载。

    Flunt C# (如何为开发人员服务):图 2 - 在 NuGet Package Manager 的搜索栏中搜索 "IronPdf",使用 Manage NuGet Package for Solution 安装 IronPDF,然后选择项目并点击 Install(安装)按钮。

  • 安装 IronPDF 软件包和项目所需的任何依赖项将由 NuGet 处理。
  • 安装完成后,IronPDF 就可以在您的项目中使用了。

通过 NuGet 网站安装

要了解有关 IronPDF 功能、兼容性和其他下载选择的更多信息,请访问 NuGet 网站 https://www.nuget.org/packages/IronPdf 上的 IronPDF 页面。

利用 DLL 进行安装

作为一种替代方法,你可以利用 IronPDF 的 DLL 文件将其直接包含到你的项目中。要获取包含 DLL 的 ZIP 文件,请访问以下网址 链接.解压缩 DLL 后,将其包含在项目中。

实施逻辑

让我们创建一个基本的 C# 应用程序,使用 IronPDF 创建 PDF,使用 Flunt 进行数据验证。在本例中,我们将使用 Flunt 验证注册表单的用户输入,并使用 IronPDF 创建 PDF 文档,其中包含已验证的用户数据摘要。

  1. 人员类: 定义了一个具有姓名和年龄属性的人员类。我们在构造函数中使用 Flunt 的流畅接口,根据预定义的验证规则验证 Person 数据。

  2. 生成 PDF: 定义了一个名为 "RenderHtmlAsPdf "的方法,它接受用户对象作为输入。该函数使用 IronPDF 的 HtmlToPdf 类将代表用户注册摘要的 HTML 文本渲染为 PDF 文档。

  3. 主方法: 使用样本 Person 数据,我们在主方法中创建一个 User 类实例。接下来,我们使用 Flunt 的 IsValid 属性来确定 Person 数据是否合法。如果数据正确,我们将调用 IronPdf 方法创建 PDF 文档。如果不正确,则在控制台中显示验证问题。

通过将用于生成 PDF 的 IronPDF 与用于数据验证的 Flunt 相结合,我们开发了一种快速工作流程,用于在 C# 应用程序中评估用户输入并生成 PDF 文档。这种方法可确保数据完整性,生成专家级质量的文件,并鼓励编写清晰、可读和可维护的代码。要了解有关 IronPDF 的更多信息,请参阅 这里.以下是示例代码片段。

using IronPdf;
using System;
using System.Linq;
using System.Text;
using Flunt.Validations;
namespace ConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            var person = new Person { Name = "Jack", Age = -25 };
            var contract = new PersonContract(person);
            if (contract.IsValid)
            {
                Console.WriteLine("Person is valid!");
            }
            else
            {
                sb.Append("<p>Validation failed: </p>");
                foreach (var notification in contract.Notifications)
                {
                    sb.Append($"- {notification.Key}: {notification.Message}");
                }
            }
            var renderer = new IronPdf.HtmlToPdf();
            //Set HTML content for the page
            var pdfDocument = renderer.RenderHtmlAsPdf(sb.ToString());
            // save the document
            pdfDocument.SaveAs("output.pdf");
            //Dispose the render object
            renderer.Dispose();
            //Display a message
            Console.WriteLine("Report generated successfully!");
        }
    }
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    public class PersonContract : Contract<Person>
    {
        public PersonContract(Person person)
        {
            Requires()
                .IsNotNull(person, nameof(person))
            .IsNotEmpty(person.Name, nameof(person.Name), "Name is required")
                .IsGreaterThan(person.Age, 0, nameof(person.Age), "Age must be a positive number");
        }
    }
}
using IronPdf;
using System;
using System.Linq;
using System.Text;
using Flunt.Validations;
namespace ConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            var person = new Person { Name = "Jack", Age = -25 };
            var contract = new PersonContract(person);
            if (contract.IsValid)
            {
                Console.WriteLine("Person is valid!");
            }
            else
            {
                sb.Append("<p>Validation failed: </p>");
                foreach (var notification in contract.Notifications)
                {
                    sb.Append($"- {notification.Key}: {notification.Message}");
                }
            }
            var renderer = new IronPdf.HtmlToPdf();
            //Set HTML content for the page
            var pdfDocument = renderer.RenderHtmlAsPdf(sb.ToString());
            // save the document
            pdfDocument.SaveAs("output.pdf");
            //Dispose the render object
            renderer.Dispose();
            //Display a message
            Console.WriteLine("Report generated successfully!");
        }
    }
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    public class PersonContract : Contract<Person>
    {
        public PersonContract(Person person)
        {
            Requires()
                .IsNotNull(person, nameof(person))
            .IsNotEmpty(person.Name, nameof(person.Name), "Name is required")
                .IsGreaterThan(person.Age, 0, nameof(person.Age), "Age must be a positive number");
        }
    }
}
Imports IronPdf
Imports System
Imports System.Linq
Imports System.Text
Imports Flunt.Validations
Namespace ConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim sb As New StringBuilder()
			Dim person As New Person With {
				.Name = "Jack",
				.Age = -25
			}
			Dim contract = New PersonContract(person)
			If contract.IsValid Then
				Console.WriteLine("Person is valid!")
			Else
				sb.Append("<p>Validation failed: </p>")
				For Each notification In contract.Notifications
					sb.Append($"- {notification.Key}: {notification.Message}")
				Next notification
			End If
			Dim renderer = New IronPdf.HtmlToPdf()
			'Set HTML content for the page
			Dim pdfDocument = renderer.RenderHtmlAsPdf(sb.ToString())
			' save the document
			pdfDocument.SaveAs("output.pdf")
			'Dispose the render object
			renderer.Dispose()
			'Display a message
			Console.WriteLine("Report generated successfully!")
		End Sub
	End Class
	Public Class Person
		Public Property Name() As String
		Public Property Age() As Integer
	End Class
	Public Class PersonContract
		Inherits Contract(Of Person)

		Public Sub New(ByVal person As Person)
			Requires().IsNotNull(person, NameOf(person)).IsNotEmpty(person.Name, NameOf(person.Name), "Name is required").IsGreaterThan(person.Age, 0, NameOf(person.Age), "Age must be a positive number")
		End Sub
	End Class
End Namespace
VB   C#

以下是上述代码的执行输出:

Flunt C#(如何为开发人员工作):图 3 - 上述代码同时使用 Fluent 和 IronPDF 的输出示例

结论

IronPDF 和 Flunt 是两个强大的 C# 库,它们可以很好地协同工作,简化文档创建和数据验证的工作流程。借助 IronPDF 复杂的 PDF 制作功能和 Flunt 强大的验证功能,开发人员可以为各种应用程序构建可靠、有效和高水准的解决方案。Flunt 和 IronPDF 为开发人员提供了创建高质量软件的必要工具,无论他们是开发桌面应用程序、网络应用程序还是基于云的解决方案,都能满足用户和利益相关者的需求。

一年的软件支持、永久许可证和库升级均包含在"$liteLicense "精简版捆绑包中。IronPDF 提供 免费许可 有关成本和许可证要求的更多详细信息,请访问 IronPDF 网站。有关 Iron 软件库的更多信息,请访问以下网站 网站。

< 前一页
Nswag C#(它如何为开发人员工作)
下一步 >
docfx C#(开发人员工作原理)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >