这就是我想要做的事情:
RuleFor(m => m.User.State).
StateIsValid(m => m.User.Country);
这是扩展方法的样子:
public static class ValidationExtensions
{
public static IRuleBuilderOptions<T, int?> StateIsValid<T>(this IRuleBuilder<T, int?> rule, int country)
{
return rule
.Must(state => IsStateOfCountry(state, country));
}
}
问题是我不知道如何正确传递Country参数或如何在扩展方法中指定country参数。 使用上面的代码我得到编译错误:无法将lambda表达式转换为类型'int',因为它不是委托类型
答案 0 :(得分:0)
问题是访问&#34;兄弟&#34; Country
之外的User
属性。如果您将扩展方法改为User
这样的对象,该怎么办?
RuleFor(m => m.User).
StateIsValid();
扩展方法需要约束:
public static class ValidationExtensions
{
public static IRuleBuilderOptions<TOuterClass, TUser> StateIsValid<TOuterClass, TUser>(this IRuleBuilder<TOuterClass, TUser> ruleBuilder)
where TUser : User
{
return ruleBuilder
.Must(user => IsStateOfCountry(user.State, user.Country));
}
}