【发布时间】:2014-11-18 03:04:45
【问题描述】:
public class Tomato
{}
public class Potato
{}
public class UIPotatoBinding(Expression<Func<object>> expression)
{
// What to put here to make sure lambda results in Potato(s)
}
public class UITomatoBinding(Expression<Func<object>> expression)
{
// What code do I need to put here to determine if the lambda expression being passed in
// results in Tomato, List<Tomato>, IEnumerable<Tomato>, ObservableCollection<Tomato>
// TomatoCollection, or some other Tomato related Linq construct.
}
这个 lambda 东西对我来说仍然是陌生的。如果我问的是已经在其他地方回答过的明显问题,我深表歉意。
【问题讨论】:
-
如果没有通用的超类/接口,那么您可以让编译器在编译时检查它...运行它,强制转换并检查异常。
-
更好的是,使用
TypeOf或as并检查是否有任何东西通过过滤器。 -
您能否编辑您的问题以包含比这更高一级要解决的问题是什么,好吗?了解这一点可能有助于获得更好的答案或为您指明不同的方向。
-
@SJuan76 我更愿意在编译时检查它,但不知道它是如何工作的。我需要能够处理 List
、IEnumerable 、ObservableCollection 、Tomato、TomatoCollection,可能还有更多。由于 lambda 表达式的“伟大”之一是延迟评估/执行,我不理解如何进行编译时检查。
标签: c# lambda expression