我正在使用 FluentValidation,并且想使用对象的某些属性值来格式化消息。问题是我对 C# 中的表达式和委托的经验很少。
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 列表。
任何人都可以帮我解决这个问题吗?