gpt4 book ai didi

c# - 创建一个通用(但在声明时键入)表达式数组

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:25 25 4
gpt4 key购买 nike

这就是我想要完成的:

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)

最佳答案

您的返回类型是接受对象并返回对象的 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,
};

关于c# - 创建一个通用(但在声明时键入)表达式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com