FluentValidationを使用していて、オブジェクトのプロパティ値の一部を使用してメッセージの書式を設定したいとします。問題は、C#で式と代理人の経験がほとんどないことです。FluentValidationのWithMessageメソッドと名前付きパラメータのリストの使用
FluentValidationは、すでにフォーマット引数でこれを行う方法を提供しています。
RuleFor(x => x.Name).NotEmpty()
.WithMessage("The name {1} is not valid for Id {0}", x => x.Id, x => x.Name);
私は、パラメータの順序を変更する場合は、メッセージ文字列を変更することを避けるために、このような何かをしたいと思います。
RuleFor(x => x.Name).NotEmpty()
.WithMessage("The name {Name} is not valid for Id {Id}",
x => new
{
Id = x.Id,
Name = x.Name
});
オリジナルメソッドのシグネチャは次のようになります。
public static IRuleBuilderOptions<T, TProperty> WithMessage<T, TProperty>(
this IRuleBuilderOptions<T, TProperty> rule, string errorMessage,
params Func<T, object>[] funcs)
私はのFuncのリストで、この方法を提供することを考えていました。
誰でも私にこれを手伝うことができますか?
問題が何よりも文字列フォーマットで行うことがより多くを持っているように思えます。これはあなたを助けるかもしれません:http://stackoverflow.com/questions/159017/named-string-formatting-in-c-sharp –
FluentValidationに提供された式がすぐに実行されないので、少し違うと思います。私はそれが既存のメソッドがデリゲートを望んでいる理由だと思う。 – Jason