gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:17:55 25 4
gpt4 key购买 nike

我在使用 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);
}

在您看来 x 的类型是什么? 字符串?是的,你是对的。

enter image description here

但是,那这是什么?

enter image description here

它的类型已从 string 更改为 PhoneDetail。我正在使用 Visual Studio 2012

这是错误还是什么?

更新:

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

> Delegate 'System.Func<SportsStore.WebUI.Models.PhoneDetail,string,bool>'
> does not take 1 arguments

最佳答案

这可能是一个 IDE 错误,也可能是它试图通过向您展示 Must 方法的另一个重载的 IntelliSense 来变得聪明。其他重载之一采用略有不同的 Func,其中包含根对象,因此您可以编写:

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

关于c# - 输入类型在 lambda 表达式中自动更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29919137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com