【发布时间】:2013-01-24 21:32:39
【问题描述】:
我有一个通用的存储库方法调用如下
var result = Repository<MyDbClass>.Get(x => x.MyProperty1 == "Something"
&& (!x.MyProperty2.HasValue || x.MyProperty2 == "SomethingElse"));
我希望使用反射来调用这个方法。我主要是在寻找一种使用反射将 lambda 表达式作为参数传递的方法。
编辑
实际上,我的存储库类型只有在运行时才能知道。所有这些存储库下的表都是相似的,有一些共同的列。正是在这些列上应用了过滤器。所以我不能按原样传递表达式。
public void SomeMethod<T, TR>(T repository, TR dataObject)
{
var type = repository.GetType();
var dataType = dataObject.GetType();
var getMethod = type.GetMethod("Get");
//How to invoke the method by passing the lambda as parameter(??)
}
【问题讨论】:
标签: c# linq reflection linq-expressions