.NET ヘルプ

Fluent C#(開発者向けの仕組み)

公開済み 2024年6月6日
共有:

イントロダクション

現在のソフトウェア開発環境では、高水準のドキュメントを作成し、データの整合性を保証することが不可欠な作業となっています。 この投稿では、強力な C# ライブラリである Flunt C# と IronPDF を組み合わせて、データ検証およびドキュメント作成のワークフローを改善する方法を見ていきます。 開発者は、さまざまなニーズに対応する効果的で信頼性の高いソリューションを構築できます。ソフトウェアアプリケーションIronPDF の高度な PDF 生成機能と Flunt の強力なバリデーション機能を活用して。

C#でFluntを使用する方法

  1. 新しいC#コンソールプロジェクトを作成します。

  2. NuGetからFluntパッケージをインストールします。

  3. 名前空間をインポートして、クラスを継承します。

  4. データモデルにバリデーションを追加します。

  5. 検証チェックを実行し、結果を表示します。

Fluent C#の理解

多用途で軽量な.NETフレームワークであるFluntは、C#アプリケーションにおける流れの良いバリデーションおよび通知パターンの開発を容易にするために作られました。 コードは、開発者がFluntを使用して流暢で表現力豊かな方法で検証ルールおよびビジネスロジックを構築すると、より読みやすく保守されやすくなります。 Fluntの幅広い統合バリデーション技術と拡張機能を活用することで、開発者はオブジェクトやコレクションのような複雑なデータ構造を簡単に検証できます。

さらに、Fluntは、.NETライブラリアプリケーションの信頼性と堅牢性を高めるための有用なツールです。Fluntは既存のコードベースやフレームワークに簡単に統合できます。 要するに、Fluntは検証とエラーハンドリングにおいて宣言的なアプローチを推奨し、開発者がよりクリーンで堅牢なコードを書くことを可能にします。

Flunt C#の特徴

Fluent Interface: Fluntはバリデーションルールを構築するための読みやすく簡潔なインターフェースを提供し、複雑なバリデーションロジックの表現を簡素化します。

チェイン可能バリデーション: バリデーションルールを自然に接続することで、少ないコードでチェイン可能バリデーションシナリオを作成できます。

統合されたバリデーター: Fluntには、日付、整数、文字列、コレクションなど、頻繁に使用されるデータタイプ用のいくつかの組み込みバリデーターが含まれています。 流暢な構文により、これらのバリデーターをプロパティに容易に適用することができます。

カスタムバリデーションルール: Fluntフレームワークを拡張することで、開発者は特定のドメイン要件に適応したバリデーションロジックを可能にするカスタムバリデーションルールを追加できます。

通知システム: 検証の問題を報告し、エラーメッセージを収集するために、Fluntは通知システムを提供します。 これにより、開発者は検証の失敗をユーザーや他のアプリケーションコンポーネントに簡単に知らせることができます。

フレームワークの統合: Fluntは、Entity FrameworkやASP.NET Coreなどの有名なフレームワークやライブラリと簡単に接続でき、既存のプロジェクトに検証ロジックを追加するのが容易です。

テスト容易性: Fluntはテスト駆動開発を促進します(テスト駆動開発 (TDD))アプリケーションコードと検証ロジックを明確に区分することで、検証ルールの単体テストを簡単に行えるようにします。

オープンソースと活気あるコミュニティ: Fluntは、開発者のグループによって積極的に維持されており、オープンソースです。 これにより、フレームワークの継続的なメンテナンス、改良、およびサポートが保証されます。

Flunt C#の入門

C#プロジェクトでFluentを設定する

通知およびバリデーションの名前空間はFluntベースクラスライブラリの一部であり、C#プロジェクトでデフォルトでアクセスできるはずです。 Fluntは、柔軟なインターフェースを提供することにより、C#プログラムのバリデーションを迅速化します。これにより、バリデーションルールの定義と適用が容易になります。 よりクリーンなコードのサポート、可読性の向上、徹底したエラーハンドリングにより、ユーザー入力、ドメインオブジェクト、APIリクエストの検証がより容易になります。

WindowsコンソールとフォームでのFluntの実装

Flunt は、Windows コンソール、Web アプリケーション、Windows フォームなど、さまざまな C# アプリケーション タイプによって実装されています。(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は、いくつかのバリデーションを追加するためのチェイン可能なメソッドを提供します。 検証は IsNotNullNotEmptyHasMinLength、および IsGreaterThan のようなメソッドによって実行されます。 すべての検証ルールには、個別のエラーメッセージが利用可能です。

バリデーション: FluentValidation.Togetherの例と同様に、オブジェクトと一緒にPersonContractインスタンスおよびPersonオブジェクトを作成します。 検証結果は契約のValid属性によって示されます。 検証結果に応じて、成功や失敗の通知と特定のエラー詳細が表示されます。

Fluent Operations

C#アプリケーションの検証および通知処理のために、Fluntは以下のような多くの操作を提供します:

検証ルールの作成: 必須フィールド、データタイプ、値の範囲、最大長、最小長などの属性に対する検証ルールを作成するには、流暢なインターフェースを使用してください。

検証の実行: データの整合性とビジネスロジックの遵守を保証するために、事前定義されたルールに従ってオブジェクトを検証します。

検証ミスの管理: 検証ミスをアラートとして記録し、ユーザーにエラーメッセージを提供するか、トラブルシューティングのためにエラーを記録することで、丁寧に対応します。 個別の検証ロジック
複雑な検証状況や特定のドメイン要件に応じて、Fluntを拡張するために独自の検証ルールを使用します。

フレームワークとの統合: 現在のアプリケーションにおける検証機能を向上させるために、FluntはEntity FrameworkやASP.NET Coreなどの多くの著名な.NETフレームワークおよびライブラリとシームレスに統合することができます。

FluntをIronPDFと統合する

開発者は Flunt と IronPDF を統合することで、C# アプリケーションにおけるビジネスロジックの検証とドキュメント作成を迅速化するために、これら両技術の強みを活用することができます。 Fluntで入力データを検証した後、IronPDFを使ってPDFドキュメントを作成することで、開発者はアプリケーションをより信頼性の高い、ユーザーフレンドリーなものにすることができます。

IronPDF をインストール

  • Visual Studio プロジェクトを起動します。
  • 「ツール」 > 「NuGet パッケージ マネージャー」 > 「パッケージ マネージャー コンソール」を選択します。
  • パッケージマネージャーコンソールに以下のコマンドを入力してください:
Install-Package IronPdf
  • 代わりに、ソリューション用NuGetパッケージマネージャーを使用して、IronPDFやその他の必要なNuGetパッケージをインストールすることもできます。
  • 検索結果からIronPDFパッケージを探索して選択した後、「インストール」ボタンをクリックしてください。 インストールとダウンロードは Visual Studio によって処理されます。

    Flunt C#(開発者向けの仕組み):図2 - NuGet Package Managerの検索バーで IronPdf を検索し、プロジェクトを選択してインストールボタンをクリックします。

  • IronPDFパッケージとプロジェクトに必要な依存関係のインストールは、NuGetによって処理されます。
  • インストール後、IronPDFをプロジェクトで使用することができます。

NuGetウェブサイトからインストールする

IronPDFの機能、互換性、その他のダウンロード方法についての詳細は、IronPDFをご覧ください。NuGetパッケージ詳細ページNuGetのウェブサイトで。

DLL を使用してインストール

代替手段として、IronPDFのDLLファイルを利用してプロジェクトに直接組み込むことができます。 DLL を含む ZIP ファイルを取得するには、次のリンクを訪問してくださいIronPDF ZIPダウンロードページ. DLLファイルを解凍したら、それをプロジェクトに含めます。

ロジックの実装

以下の内容を日本語に翻訳してください:

IronPDFを使用してPDFを作成し、Fluntを使用してデータを検証する基本的なC#アプリケーションを作成しましょう。 この例では、Fluntを使用して登録フォームのユーザー入力を検証し、IronPDFを使用して検証されたユーザーデータの概要を含むPDFドキュメントを作成します。

  1. Personクラス: 名前と年齢の属性を持つPersonクラスが定義されています。 私たちは、Fluntのフルエントインターフェースをコンストラクタで使用して、事前定義された検証ルールに基づいてPersonデータを検証します。

  2. Generate Pdf: RenderHtmlAsPdf というメソッドが定義されており、Userオブジェクトを入力として受け取ります。 この機能は、IronPDFのHtmlToPdfクラスを使用して、ユーザー登録の概要を表すHTMLテキストをPDF文書にレンダリングします。

  3. Mainメソッド: サンプルのPersonデータを使用して、Mainメソッド内でUserクラスのインスタンスを作成します。 次に、Personデータが正当かどうかを判断するために、Fluntの IsValid 属性を使用します。 データが正しい場合、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
VB   C#

以下は上記コードからの実行出力です:

開発者向けFluent C#(動作の仕組み): 図3 - 上記のコードを使用した例の出力(FluentおよびIronPDFの両方を利用)

結論

IronPDFとFluntは、ドキュメント作成とデータ検証のワークフローを合理化するためにうまく機能する2つの強力なC#ライブラリです。 IronPDFの高度なPDF生成機能とFluntの強力な検証機能を活用することで、開発者はさまざまなアプリケーションに対して信頼性が高く、効率的で高品質なソリューションを構築できます。 FluntとIronPDFは、デスクトップアプリ、ウェブアプリケーション、クラウドベースのソリューションを開発する際に、ユーザーやステークホルダーのニーズに応える高品質のソフトウェアを作成するために必要なツールを開発者に提供します。

ソフトウェアサポート1年、永久ライセンス、およびライブラリアップグレードがすべて含まれた$749 Liteバンドル。 IronPDFは提供します無料ライセンスの詳細コストとライセンス要件に関する詳細については、IronPDFをご覧ください。 Iron Softwareライブラリの詳細については、以下をご覧ください。Iron Software公式ウェブサイト.

< 以前
Nswag C#(開発者向けの動作方法)
次へ >
docfx C#(開発者向けの使用方法)