这是我要完成的工作:
public static Expression<Func<object, object>>[] Expressions()
=> new Expression<Func<object, object>>[]
{
(Type1 t1) => t1.t1Field,
(Type2 t2) => t2.t2Field,
...
(TypeN tN) => tN.tNField
};
编译器不喜欢Type[i]
部分:Cannot convert lambda expression to delegate type 'Expression<Func<object, object>>' because the parameter types do not match the delegate parameter
。
我尝试使用dynamic
代替object
,但是没有用。
我也曾尝试实现这样的目标,但没有成功:
public static Expression<Func<object, object>> Cast<T>(Expression<Func<T, object>> expression)
答案 0 :(得分:1)
您的返回类型是一个接受对象并返回对象的lambda数组。但是您返回一个lambda数组,每个lambda都接受某种用户类型。最简单的方法是添加类型转换:
public static Expression<Func<object, object>>[] Expressions()
=> new Expression<Func<object, object>>[]
{
(Object o) => ((Type1)o).t1Field,
(Object o) => ((Type2)o).t2Field,
};