我正在使用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)
我想提供這種方法與函數功能的列表。
任何人都可以幫助我嗎?
好像問題更多的是用繩子比什麼都格式化。這可能會幫助你:http://stackoverflow.com/questions/159017/named-string-formatting-in-c-sharp –
我認爲它有點不同,因爲提供給FluentValidation的表達式不會立即執行。我認爲這就是爲什麼現有的方法需要一個委託。 – Jason