C#
 Computer >> コンピューター >  >> プログラミング >> C#

FluentValidationを使ってC#の文字列プロパティに最小長・最大長の検証を実装する方法

C#アプリケーションで入力値の文字数制限を検証したい場合、FluentValidationライブラリを使用すると、簡潔かつ宣言的にルールを記述できます。この記事では、文字列プロパティに対して最大長と最小長の検証を行うMaximumLengthおよびMinimumLengthバリデーターの使い方を、実際のコード例とともに解説します。


MaxLength(最大長)バリデーターとは

MaximumLengthは、特定の文字列プロパティの長さが指定した値を超えないことを保証するバリデーターです。たとえば「名前は7文字以内」といったビジネスルールを簡単に表現できます。

  • 文字列型(string)のプロパティにのみ適用可能です。
  • 指定した最大文字数より長い値が設定されると、検証エラーが発生します。

エラーメッセージで使えるプレースホルダー

FluentValidationでは、エラーメッセージ内で以下のプレースホルダーを使用できます。

  • {PropertyName} … 検証対象のプロパティ名
  • {MaxLength} … 設定された最大長
  • {TotalLength} … 実際に入力された文字数
  • {PropertyValue} … プロパティの現在の値

MinLength(最小長)バリデーターとは

MinimumLengthは、特定の文字列プロパティの長さが指定した値以上であることを保証するバリデーターです。「パスワードは5文字以上必須」のような要件に活用できます。

  • こちらも文字列型(string)のプロパティにのみ有効です。
  • 指定した最小文字数に満たない値が設定されると、検証エラーが発生します。

エラーメッセージで使えるプレースホルダー

  • {PropertyName} … 検証対象のプロパティ名
  • {MinLength} … 設定された最小長
  • {TotalLength} … 実際に入力された文字数
  • {PropertyValue} … プロパティの現在の値

実装例:Personモデルの検証

以下は、FirstNameに最大7文字、LastNameに最小5文字のルールを適用したサンプルコードです。

static void Main(string[] args)
{
    List<string> errors = new List<string>();

    PersonModel person = new PersonModel();
    person.FirstName = "TestUser444";
    person.LastName = "TTT";

    PersonValidator validator = new PersonValidator();
    ValidationResult results = validator.Validate(person);

    if (results.IsValid == false)
    {
        foreach (ValidationFailure failure in results.Errors)
        {
            errors.Add(failure.ErrorMessage);
        }
    }

    foreach (var item in errors)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}

public class PersonModel
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class PersonValidator : AbstractValidator<PersonModel>
{
    public PersonValidator()
    {
        RuleFor(p => p.FirstName).MaximumLength(7).WithMessage("MaximumLength must be 7 {PropertyName}");
        RuleFor(p => p.LastName).MinimumLength(5).WithMessage("MinimumLength must be 5 {PropertyName}");
    }
}

コードのポイント

  • AbstractValidator<PersonModel>を継承したバリデータークラスを作成し、コンストラクター内でRuleForメソッドを使ってルールを定義します。
  • WithMessageを使うことで、デフォルトのエラーメッセージをカスタマイズでき、プレースホルダー{PropertyName}には自動的にプロパティ名が挿入されます。
  • Validateメソッドの戻り値であるValidationResultIsValidプロパティがfalseの場合、Errorsコレクションから各エラー詳細(ValidationFailure)を取得できます。

実行結果

上記のコードでは、FirstNameが「TestUser444」(10文字)で最大長7文字を超えており、LastNameが「TTT」(3文字)で最小長5文字に満たないため、次の2つのエラーメッセージが出力されます。

MaximumLength must be 7 First Name
MinimumLength must be 5 Last Name

まとめ

FluentValidationのMaximumLengthMinimumLengthを使えば、文字列プロパティの文字数制限をわずか数行のコードで実装できます。WithMessageによるカスタムメッセージやプレースホルダーを組み合わせることで、ユーザーフレンドリーなエラー表示も容易に行えます。フォーム入力やAPIリクエストの検証など、さまざまな場面でぜひ活用してみてください。

  1. Windows 10・8・7でPowerShellのバージョンを確認する方法

    Windows 10には標準でWindows PowerShell 5.0が搭載されており、さらにWindows Update(WU)を通じて上位バージョンの5.1が自動的にインストールされる仕組みになっています。そのため、「自分が現在使用しているPowerShellはどのバージョンなのか?」と気になって、確認方法を探しているユーザーも少なくありません。 ターミナルからPowerShellを使って作業するのが好きな方なら、システムが常に最新リリースを利用しているかどうかを確認しておくのがおすすめです。特に、Windows 10より前のOSを使用している場合は重要です。PowerShellはバー

  2. Windows 11でカメラとマイクを使用しているアプリを確認する方法

    Windowsでは、ビデオ通話や写真撮影、音声録音などの目的で、アプリやプログラムにカメラとマイクへのアクセスを許可していることがあります。しかし、プライバシーを重視するユーザーなら、アプリが密かにカメラやマイクを使用していないか気になるものです。この記事では、Windows 11でカメラとマイクにアクセスしているプログラムやサービスを特定する方法をご紹介します。 Windowsでカメラとマイクを使用しているアプリを確認する方法 Windows 11でアプリが音声の録音を開始すると、画面右下のシステムトレイアイコンの横にマイクのアイコンが表示されます。これは最新のストアアプリでも従来のデスクト