.NET 帮助

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

介绍

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

如何在 C# 中使用 Flunt;

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

  2. 从 NuGet 安装 Flunt 软件包。

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

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

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

了解 Flunt C#

多功能、轻量级的 .NET Framework 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## 项目中设置 Flunt

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

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

Flunt 可以在多种 C# 应用程序类型中实现,包括 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
$vbLabelText   $csharpLabel

Person 类:FluentValidation 示例中的相同。

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

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

Flunt 操作

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

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

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

管理验证错误: 将验证错误记录为警报,并通过向用户提供错误消息或记录错误以进行故障排除来礼貌地响应。 个性化验证逻辑 使用独特的验证规则来扩展 Flunt,以应对复杂的验证环境或特定领域的要求。

与框架的集成:为了提高现有应用程序中的验证功能,Flunt可以无缝集成到许多著名的.NET框架和库中,包括Entity Framework、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 包管理器的搜索栏中搜索“IronPdf”,使用“管理 NuGet 包以解决方案”安装 IronPDF,然后选择项目并点击安装按钮。

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

通过 NuGet 网站安装

要了解更多关于IronPDF的功能、兼容性和其他下载选项,请查看NuGet网站上的NuGet包详细信息页面

利用 DLL 进行安装

作为替代方案,您可以利用 IronPdf 的 DLL 文件将其直接包含到您的项目中。 要获取包含 DLL 的 ZIP 文件,请访问以下IronPDF ZIP 下载页面。 解压缩 DLL 后,将其包含在您的项目中。

实现逻辑

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

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

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

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

    通过将用于生成 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
$vbLabelText   $csharpLabel

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

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

结论

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

Lite 套餐中包含了一年软件支持、永久许可证和库升级。 IronPDF提供免费许可详情,有关费用和许可要求的更多详细信息。 有关Iron Software库的更多信息,请访问Iron Software官网。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
Nswag C#(它如何为开发人员工作)
下一步 >
docfx C#(开发人员工作原理)