gpt4 book ai didi

c# - 从范围引用了类型为 'x' 的变量 'Product',但未定义

转载 作者:可可西里 更新时间:2023-11-01 08:43:14 24 4
gpt4 key购买 nike

我在类库项目中有一个名为 Product 的类。我正在使用 SubSonic SimpleRepository 来保存对象。我在 Product 类中有如下方法:

public static IList<Product> Load(Expression<Func<Product, bool>> expression)
{
var rep=RepoHelper.GetRepo("ConStr");
var products = rep.Find(expression);
return products.ToList();
}

我这样调用这个函数:

private void BindData()
{
var list = Product.Load(x => x.Active);//Active is of type bool
rptrItems.DataSource = list;
rptrItems.DataBind();
}

BindData 调用 Load 抛出异常:

variable 'x' of type 'Product' referenced from scope '', but it is not defined

我该如何解决。

编辑:- 通过单步执行 SubSonic 代码,我发现错误是由该函数引发的

private static Expression Evaluate(Expression e)
{
if(e.NodeType == ExpressionType.Constant)
return e;
Type type = e.Type;
if(type.IsValueType)
e = Expression.Convert(e, typeof(object));
Expression<Func<object>> lambda = Expression.Lambda<Func<object>>(e);
Func<object> fn = lambda.Compile(); //THIS THROWS EXCEPTION
return Expression.Constant(fn(), type);
}

最佳答案

在我的头撞了很多天甚至向 Jon Skeet 寻求帮助之后,我发现了问题所在。

问题实际上出在 SubSonic(@Timwi 是对的)。就在这一行:

var list = Product.Load(x => x.Active);//Active is of type bool

我改成之后:

var list = Product.Load(x => x.Active==true);

一切顺利

关于c# - 从范围引用了类型为 'x' 的变量 'Product',但未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673288/

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