在使用Fluent Validation Must
子句时,我注意到了一个非常奇怪的问题。
我们说我有这样的模特:
public class PhoneDetail
{
public int PrefixId { get; set; }
public string Digits { get; set; }
}
这是验证器:
public PhoneDetailValidator()
{
this.RuleFor(phone => phone.Digits)
.Must(x => x == null);
}
您认为 {{1>} 的类型是什么? x
?是的,你是对的。
但是,那是什么?
它已将其类型从 String
更改为 string
。
我正在使用 Visual Studio 2012 。
那是错误还是什么?
更新
另外,值得一提的是,在第一种情况下它编译得很好。但是,在第二种情况下发生编译器错误:
PhoneDetail
答案 0 :(得分:4)
它是一个IDE错误,或者通过向Must
方法的另一个重载显示IntelliSense来试图变得聪明。其他一个重载需要稍微不同的Func
,其中包括根对象,所以你可以写:
this.RuleFor(phone => phone.Digits)
.Must((phone, x) => phone.Digits == null);