パラメータが3つの値のうちの1つであるかどうかをFluentValidationでチェックする 質問する

パラメータが3つの値のうちの1つであるかどうかをFluentValidationでチェックする 質問する

1 つの文字列プロパティを含むクラスがあります。

public class Bla
{
    public string Parameter { get; set; }
}

Parameter が次のいずれかの文字列と等しいかどうかをチェックするカスタム AbstractValidator を作成したいと思います。

str1, str2, str3

これが出発点になると思います:

RuleFor(x => x.Parameter).Must(x => x.Equals("str1") || x.Equals("str2") || x.Equals("str3")).WithMessage("Please only use: str1, str2, str3");

しかし、これを連鎖させて、理想的には可能性をハードコーディングせずにエラーメッセージも表示できますか? 例:

Please only use: str1, str2, str3

ベストアンサー1

条件をリストにしてこれを行うことができます

var conditions = new List<string>() { str1, str2, str3 };
RuleFor(x => x.Parameter)
  .Must(x => conditions.Contains(x))
  .WithMessage("Please only use: " + String.Join(", ", conditions));

おすすめ記事