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

ε祈祈猫儿з 提交于 2019-12-08 15:33:18

问题


I have a class named Product in class library project. I am using SubSonic SimpleRepository to persist objects. I have a method as follows in Product class:

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

I'm calling this function like this:

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

Calling Load from BindData throws the exception:

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

How can I resolve this.

EDIT:- by stepping through SubSonic code I found that the error is thrown by this function

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);
}

回答1:


After banging my head on the wall for many days and even asking Jon Skeet for help, I found out the problem.

The problem actually is with SubSonic (@Timwi was right). It is right in this line:

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

After I changed it to:

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

all was well.



来源:https://stackoverflow.com/questions/4673288/variable-x-of-type-product-referenced-from-scope-but-it-is-not-defined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!