输入类型在lambda表达式中自动更改

时间:2015-04-28 12:11:39

标签: c# .net visual-studio visual-studio-2012 lambda

在使用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?是的,你是对的。

enter image description here

但是,那是什么?

enter image description here

它已将其类型从 String 更改为 string。 我正在使用 Visual Studio 2012

那是错误还是什么?

更新

另外,值得一提的是,在第一种情况下它编译得很好。但是,在第二种情况下发生编译器错误:

PhoneDetail

1 个答案:

答案 0 :(得分:4)

它是一个IDE错误,或者通过向Must方法的另一个重载显示IntelliSense来试图变得聪明。其他一个重载需要稍微不同的Func,其中包括根对象,所以你可以写:

this.RuleFor(phone => phone.Digits)
            .Must((phone, x) => phone.Digits == null);