クラスライブラリプロジェクトにProduct
という名前のクラスがあります。私はオブジェクトを永続化するためにSubSonic SimpleRepository
を使用しています。私はProduct
クラスに以下のような方法を持っている:私はこのように、この関数を呼んでいるスコープから参照される 'Product'タイプの変数 'x'は定義されていません
public static IList<Product> Load(Expression<Func<Product, bool>> expression)
{
var rep=RepoHelper.GetRepo("ConStr");
var products = rep.Find(expression);
return products.ToList();
}
:BindData
からLoad
を呼び出す
private void BindData()
{
var list = Product.Load(x => x.Active);//Active is of type bool
rptrItems.DataSource = list;
rptrItems.DataBind();
}
は例外をスロー:
variable 'x' of type 'Product' referenced from scope '', but it is not defined
どのようにすることができます私はこれを解決する。
編集: - 私はエラーが多くの日のために壁に頭を強打しても、助けを求めジョンスキートを求めた後、この機能
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);
}
SubSonicのバグのようです。 (@コビー:いいえ) – Timwi
@ティムウィこれを回避するには? – TheVillageIdiot