gpt4 book ai didi

c# - 没有获得 Lambda 表达式的 Intellisense

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:43 24 4
gpt4 key购买 nike

基本上,我已经为我正在使用的验证对象创建了一个辅助方法。代码是这样的:

public class ValidationSet<TSource> : ValidationSet
{
public void AddValidationErrorFor<TProperty>(Expression<Func<TSource, TProperty>> propertyLambda, string errorMessage, string data = null)
{
// extension method
PropertyInfo property = propertyLambda.GetPropertyInfo();

Add(new ValidationItem
{
Key = property.Name,
Message = errorMessage,
DataMessage = data
});
}
}

public class ValidationSet : List<ValidationItem>
{
public void AddValidationError(string key, string errorMessage)
{
Add(new ValidationItem
{
Key = key,
Message = errorMessage
});
}
}

实际上,发生的事情(并且有效)是我可以这样写:

public class SomeObject
{
public int Id { get; set; }
public string SomeValue { get; set; }
}

然后当我想验证它时,我可以这样写:

ValidationSet<SomeObject> validationSet = new ValidationSet<SomeObject>();

if(SomeValue.Contains("SomeOtherValue"))
validationSet.AddValidatorErrorFor(x => x.SomeValue, "Some Error");

这一切目前都在编译。但是,我没有得到最后一行中的 lambda 表达式的智能感知。我必须手动输入 x.SomeValue,尽管它都可以正常编译。有谁知道获取智能感知缺少什么?

最佳答案

我像这样复制了你的设置......

public class ValidateThing<TSource>
{
public void AddValidation<TProperty>(Expression<Func<TSource, TProperty>> expr)
{
//...
}
}

public static class Tester
{
public static void Test()
{
ValidateThing<string> v = new ValidateThing<string>();

v.AddValidation(s => s.Length);
}
}

s => 之后键入 s. 后,我立即获得了 String 成员的智能感知。此代码片段是否产生与您的代码相同的行为?

编辑:哦,我想询问您使用的是哪个版本的 Visual Studio 是相关的。

关于c# - 没有获得 Lambda 表达式的 Intellisense,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475406/

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