0
public class Program
{
private static void Main()
{
ContrivedComparer.Compare<Person>(person => person.Name == "Calvin");
}
}
public class Person
{
public string Name { get; set; }
}
public class ContrivedComparer
{
// this likely looks highly ill-advised out of context but this is contrived.
public static readonly object comparatePerson = new Person { Name = "Ted" };
public static void Compare<TComparate>(Expression<Func<TComparate, bool>> predicate)
{
if (predicate.Compile()((TComparate)comparatePerson)) return;
var expression = (BinaryExpression)predicate.Body;
var actual = Expression.Lambda(expression.Left).Compile().DynamicInvoke();
var expected = Expression.Lambda(expression.Right).Compile().DynamicInvoke();
}
}
我期望actual
爲具有相同的值作爲左操作數和用於expected
爲具有相同的值作爲右操作數。表達API拋出異常:類型的「X」從範圍「」引用的變量「X」,但它沒有定義
然而,這種代碼拋出具有以下消息的InvalidOperationException
:從範圍「」被引用類型「人」的
變量「人」,但它沒有定義。
如何解決此異常?
什麼'實際'和'預計'應該最終成爲? – Jon 2014-09-05 19:13:58
@Jon對不起,如果我不清楚喬恩。我更新了我的問題。 – 2014-09-05 19:17:23