【发布时间】:2016-11-13 09:25:49
【问题描述】:
我的班级有以下列表:
public class Mapper {
public List<Expression> Expressions { get; set; } = new List<Expression>();
}
我知道所有的表达式都是:
Expression<Func<InType, OutType>>
问题在于列表中的 InType 和 OutType 不同...
我试图定义类似的东西,但它没有编译。
Expression<Func<,>>
稍后我将需要遍历每个表达式并获取函数的输入和输出类型。
这可能吗?
【问题讨论】:
-
List<Expression>>是错字吗? -
如果 InType 和 OutType 不同,您可能需要重新考虑是否应将它们保留在同一个列表中。否则,InType 和 OutType 可能具有相同的基类或实现公共接口。
-
为什么不将列表声明为
List<LambdaExpression>?然后您还可以通过编程方式获取参数(即 InType)和返回的类型(即 OutType) -
@bassfader
LambdaExpressionis 一个(继承自)表达式 = 共享Parameters和ReturnType属性。 -
@marsze 我知道
Expression是(所有表达式的)基本类型。但Parameters和ReturnType属性由LambdaExpression 定义,不属于Expression基类,它们由LambdaExpression类定义(参见this link on MSDN)
标签: c#