ラムダ式を作成して、これを rulefor に渡そうとしています。コードはコンパイルされますが、実行すると次のメッセージが表示されます..
「'FluentValidation.Internal.RuleBuilder' には 'Length' の定義が含まれていません」
これが検証コードです。目的は、2 つのバリデーターで、同じ検証ルールを再度ユーザー名または別のプロパティに適用することです。
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");
}
}
}
助けていただければ幸いです...