3
我試圖構建一個lambda表達式並將其傳遞給rulefor。該代碼編譯,但在執行我得到的消息follwing ..傳遞lambda表達式的流利驗證
「‘FluentValidation.Internal.RuleBuilder’不包含‘長度’的定義,」
這是驗證代碼是這樣的。目的是在兩個驗證器中,我希望再次應用相同的驗證規則用戶名或另一個屬性。
public class UserValidator : AbstractValidator<DTO.User>
{
public UserValidator(DTO.User u)
{
foreach (PropertyInfo property in
this.GetType().BaseType
.GetGenericArguments()[0]
.GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
if (property.Name == "Username")
{
ParameterExpression parameter = Expression.Parameter(typeof(DTO.User), "p");
Expression propertyAccess = Expression.Property(parameter, property);
// Make it easier to call RuleFor without knowing TProperty
dynamic lambda = Expression.Lambda(propertyAccess, parameter);
RuleFor(lambda)
.Length(4, 9)
.WithMessage("Valid between 4 and 9 chars");
//RuleFor(x => x.Username)
// .Length(4, 9)
// .WithMessage("Valid between 4 and 9 chars");
}
}
}
任何幫助表示讚賞...
快速提示:添加語言你正在使用你的標籤列表(我剛剛完成)。您的問題將有更多的機會被該語言的專家閱讀。我希望大多數人通過與他們相關的標籤過濾問題。 – Flanfl