переменная 'x' типа 'Product' указана в области видимости, но не определена - PullRequest
11 голосов
/ 12 января 2011

У меня есть класс с именем 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();
}

Вызов Load из BindData вызывает исключение:

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

1 Ответ

13 голосов
/ 16 января 2011

После того, как я несколько дней ударился головой о стену и даже попросил помощи у Джона Скита, я обнаружил проблему.

Проблема на самом деле с SubSonic (@Timwi был прав). Именно в этой строке:

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

После того, как я изменил его на:

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

все было хорошо.

...