在C#中运行时检查lambda表达式

时间:2010-05-20 10:42:44

标签: c# lambda

我对Get类型的方法MyType1接受Func<MyType2, bool>作为参数。

使用它的一个例子:

mytype1Instance.Get(x => x.Guid == guid));

我想创建方法Get的存根实现,该实现检查传入的lambda表达式并确定guid的值是什么。显然lambda可能是“任何东西”,但我很高兴存根对lambda做出假设,它试图匹配Guid属性。

我该怎么做?我怀疑它涉及使用内置的Expression类型?

2 个答案:

答案 0 :(得分:2)

public void Get<T>(Expression<Func<T,bool>> expr)
{
  // look at expr
}

答案 1 :(得分:2)

查看Typed Reflector,它是一个简单的单源文件组件,提供从强类型成员访问到相应MemberInfo实例的桥梁。

即使您可能无法使用它,它也应该让您对使用表达式可以做什么有所了解。