【发布时间】:2012-01-09 18:43:08
【问题描述】:
我的方法看起来像
ISomething<U> Foo<T, U>(Expression<Func<T, U>> selector)
{
Expression<Func<T, object>> generalSelector =
ChangeSelectorReturnType<object>(selector);
Use(generalSelector);
return new Something<U>(selector);
}
假设selector 始终是一个简单的属性访问器,例如x => x.Property,那么实现ChangeSelectorReturnType 的最简单代码是什么?
我知道presented in another question 的解决方案有效,但它需要一个完整的表达式访问者,因为没有做出任何假设。在这种情况下,我可以接受假设。
【问题讨论】:
-
我认为伴随这个问题的代码被过度清理了。
泛型在哪里指定? -
哦。它实际上是在一个包含接口上,但为了清楚起见,我会将它添加到方法中。
标签: c# linq lambda expression-trees