跳至頁尾內容
.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 為建立驗證規則提供了清晰簡潔的介面,簡化了複雜驗證邏輯的表達。

Chainable Validation: 透過自然地連結驗證規則,只需少量程式碼即可建立 Chainable Validation 情境。

內建驗證器: Flunt 內建多種常用資料類型的驗證器,包括日期、整數、字串和集合。 流暢的語法可讓您輕鬆地將這些驗證器應用到屬性上。

自訂驗證規則:透過擴充 Flunt 框架,開發人員可以新增自訂驗證規則,讓驗證邏輯能符合特定領域的需求。

通知系統:為了報告驗證問題和收集錯誤訊息,Flunt 提供了一個通知系統。 這可讓開發人員簡單地通知使用者或其他應用程式元件驗證失敗。

與框架整合: Flunt 可輕鬆與知名的框架和函式庫 (包括 Entity Framework 和 ASP.NET Core) 連結,讓您輕鬆將驗證邏輯新增至已存在的專案。

可測性: Flunt 在應用程式程式碼與驗證邏輯之間進行了明確的區分,使單元測試驗證規則變得簡單,從而促進了測試驅動開發 (TDD)。

開放原始碼與蓬勃發展的社群:一群開發人員積極維護 Flunt,使其成為開放原始碼。 這樣才能保證持續維護、強化和支援該架構。

開始使用 Flunt C#。

在 C# 專案中設定 Flunt

Notifications 和 Validation 命名空間是 Flunt 基礎類庫的一部分,在您的 C# 專案中應該可以預設存取。 Flunt 透過提供定義和套用驗證規則的彈性介面,加速 C# 程式的驗證。 其支援更簡潔的程式碼、增強的可讀性和徹底的錯誤處理,使得驗證使用者輸入、網域物件和 API 請求變得更容易。

在 Windows Console 和 Forms 中實作 Flunt。

Flunt 由眾多 C# 應用程式類型實作,包括 Windows Console、Web 應用程式和 Windows Forms (WinForms)。 儘管每種架構都有不同的實作方式,但一般概念總是相同的。

Flunt C# (How It Works For Developers):圖 1 - 使用 Visual Studio 套件管理員搜尋 Flunt 並安裝

Flunt C# 示例

您可以在安裝後立即使用下列程式碼 Flunt。 這是一個簡單的範例,教您如何使用 Flunt 來建構驗證規則:

using System;
using Flunt.Validations;

public class Program
{
    static void Main(string[] args)
    {
        var person = new Person { Name = "Jack", Age = -25 };
        var contract = new PersonContract(person);

        // Perform 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 System;
using Flunt.Validations;

public class Program
{
    static void Main(string[] args)
    {
        var person = new Person { Name = "Jack", Age = -25 };
        var contract = new PersonContract(person);

        // Perform 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");
    }
}
$vbLabelText   $csharpLabel

Person 類別:代表具有 NameAge 屬性的實體。

PersonContract這個類別源自 Flunt 的基本概念 Contract<T>。 使用 Requires 方法,建構器會取得一個 Person 物件,並提供驗證規則。 Requires提供了一種可鏈接的方法來定義多個驗證。 驗證由 IsNotNull, IsNotEmpty, IsGreaterThan 等方法執行。 每個驗證規則都有相關的自訂錯誤訊息。

驗證:類似於 FluentValidation 的範例,這會建立一個 PersonContractPerson 物件的實體。 驗證結果由契約的 IsValid 屬性顯示。 根據驗證結果,會顯示成功或失敗的通知,以及特定的錯誤訊息。

Flunt 作業。

對於 C# 應用程式中的驗證和通知處理,Flunt 提供了許多操作,例如:

建立驗證規則:若要為強制欄位、資料類型、值範圍、最大長度和最小長度等屬性建立驗證規則,請使用 fluent 介面。

執行驗證:為了保證資料的完整性和對業務邏輯的遵循,根據預先定義的規則來驗證物件。

管理驗證錯誤:將驗證錯誤註記並記錄為警示,並透過給予使用者錯誤訊息或記錄錯誤以進行故障排除,禮貌地回應這些錯誤。

自訂驗證邏輯:使用獨特的驗證規則來擴充 Flunt,以因應複雜的驗證情況或特定領域的需求。

與框架整合:為了提高目前應用程式的驗證能力,Flunt 可以與許多知名的 .NET 框架和函式庫無縫整合,包括 Entity Framework、ASP.NET Core 等。

將 Flunt 與 IronPDF 整合。

開發人員可以利用這兩種技術的優勢,透過整合 Flunt 與 IronPDF,加速 C# 應用程式中的商業邏輯驗證及文件建立。 開發人員可使用 IronPDF 在使用 Flunt 驗證輸入資料後建立 PDF 文件,使應用程式更可靠、更易於使用。

安裝 IronPDF。

  • 啟動 Visual Studio 專案。
  • 選擇"工具">"NuGet Package Manager">"Package Manager Console"。
  • 在套件管理員控制台輸入此指令:
Install-Package IronPdf
  • 作為替代方案,您可以使用 NuGet Package Manager for Solutions 安裝 IronPDF 和其他必要的 NuGet 套件。
  • 探索並從搜尋結果中選擇 IronPdf 套件後,按一下"安裝"按鈕。 安裝與下載將由 Visual Studio 處理。

!Flunt C# (How It Works For Developers):圖 2 - 使用管理 NuGet Package for Solution 安裝 IronPDF,方法是在 NuGet Package Manager 的搜尋列中搜尋 "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.Generate Pdf: 定義了一個稱為 RenderHtmlAsPdf 的方法,它接受 User 物件作為輸入。 本功能透過 IronPDF 的 HtmlToPdf 類,將代表使用者註冊摘要的 HTML 文字渲染成 PDF 文件。 3.Main 方法:使用範例 Person 資料,我們在 Main 方法中建立一個 User 類別的實體。 接下來,我們使用 Flunt 的 IsValid 屬性來判斷 Person 資料是否合法。 為了建立 PDF 文件,如果資料正確,我們會調用 IronPdf 方法。 否則會在控制台顯示驗證問題。

透過結合 IronPDF(用於 PDF 生成)與 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 for HTML content
            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!");
                sb.Append("<p>Person is valid!</p>");
            }
            else
            {
                sb.Append("<p>Validation failed: </p>");
                foreach (var notification in contract.Notifications)
                {
                    sb.Append($"- {notification.Key}: {notification.Message}<br>");
                }
            }

            var renderer = new HtmlToPdf();
            // Set HTML content for the page
            var pdfDocument = renderer.RenderHtmlAsPdf(sb.ToString());
            // Save the document
            pdfDocument.SaveAs("output.pdf");
            // Dispose the renderer 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 for HTML content
            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!");
                sb.Append("<p>Person is valid!</p>");
            }
            else
            {
                sb.Append("<p>Validation failed: </p>");
                foreach (var notification in contract.Notifications)
                {
                    sb.Append($"- {notification.Key}: {notification.Message}<br>");
                }
            }

            var renderer = new HtmlToPdf();
            // Set HTML content for the page
            var pdfDocument = renderer.RenderHtmlAsPdf(sb.ToString());
            // Save the document
            pdfDocument.SaveAs("output.pdf");
            // Dispose the renderer 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");
        }
    }
}
$vbLabelText   $csharpLabel

以下是上述程式碼的執行輸出:

Flunt C# (How It Works For Developers):圖 3 - 上述程式碼利用 Flunt 與 IronPDF 的輸出範例

結論

IronPDF 和 Flunt 是兩個強大的 C# 函式庫,兩者搭配使用可簡化文件建立和資料驗證的工作流程。 有了 IronPdf 精細的 PDF 製作功能和 Flunt 強大的驗證能力,開發人員可以為各種應用程式建構可靠、有效且高水準的解決方案。 Flunt 和 IronPDF 為開發人員提供了必要的工具,讓他們無論是開發桌面應用程式、網頁應用程式或雲端解決方案,都能創造出符合使用者和利害關係人需求的高品質軟體。

$799 Lite bundle 中包含一年的軟體支援、永久授權以及函式庫升級。 IronPdf 提供 免費的 IronPDF 授權細節,以瞭解有關成本和授權要求的進一步詳情。 如需 Iron Software 函式庫的其他資訊,請造訪 Iron Software 官方網站

常見問題解答

Flunt C# 如何改進我應用程式中的驗證流程?

Flunt C# 透過提供流暢的介面來增強驗證流程,使開發人員能夠以可讀且易於維護的方式建立複雜的驗證規則。它支援鍊式驗證場景,並可與 ASP.NET Core 和 Entity Framework 等框架無縫整合。

設定 Flunt C# 進行驗證涉及哪些步驟?

要設定 Flunt C# 進行驗證,您需要建立一個新的 C# 項目,從 NuGet 安裝 Flunt 套件,匯入必要的命名空間,並繼承基底類別來建立您的驗證規則和邏輯。

IronPDF 如何與 Flunt C# 整合以增強文件建立功能?

IronPDF 可以與 Flunt C# 搭配使用,在產生 PDF 之前驗證輸入資料。這確保只使用有效數據,從而提高生成文件的可靠性。驗證完成後,IronPDF 可讓您以程式設計方式建立專業品質的 PDF 文件。

在測試驅動開發中使用 Flunt C# 有哪些好處?

Flunt C# 透過明確分離驗證邏輯和應用程式程式碼,支援測試驅動開發。這種分離使得開發人員能夠輕鬆地編寫和運行針對驗證規則的單元測試,從而確保應用程式的正確性和健全性。

Flunt C# 能否處理自訂驗證規則?

是的,Flunt C# 允許開發者定義自訂驗證規則以滿足特定的應用程式需求。這種靈活性有助於解決內建驗證器無法涵蓋的特殊驗證場景。

如何在 C# 專案中安裝 IronPDF?

若要安裝 IronPDF,請開啟 Visual Studio 項目,導覽至“工具”>“NuGet 套件管理器”>“套件管理器控制台”,然後執行命令Install-Package IronPdf 。或者,您也可以使用 NuGet 解決方案套件管理器將 IronPDF 新增至專案。

Flunt C# 中的通知系統扮演什麼角色?

Flunt C# 中的通知系統旨在擷取和報告驗證錯誤。它允許開發人員收集錯誤訊息和回饋,以便將驗證問題告知使用者或應用程式的其他元件。

Flunt C# 是否適合用於開源專案?

是的,Flunt C# 是開源的,由開發者社群維護。這使其成為開源專案的可靠選擇,能夠獲得持續的更新和支援。

Jacob Mellor,Team Iron 首席技術官
首席技術長

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。