gpt4 book ai didi

c# - 如何在没有 DynamicInvoke 的情况下编译 MethodCallExpression?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:17 25 4
gpt4 key购买 nike

我有一个 MethodCallExpression 包含这样的日期调用

DateTime.UtcNow.AddDays(-10);

我希望能够将其编译成它所代表的实际日期,但由于我使用的是 Xamarin 并为 iOS 构建,因此由于 AOT 编译限制,我无法使用 DynamicInvoke() 方法。

var expression = MyExpression;
if (expression.Type.Name == "DateTime")
{
// Can't do this. Even though it works in most cases
string result = Expression.Lambda( expression ).Compile().DynamicInvoke();
}

最佳答案

因此,据我所知,经过一些研究……无法从 ExpressionVisitor 中进行编译,原因很简单,因为它需要即时编译,而这在 iOS 上是不允许的。

我们的替代方案是接受此限制,并更改我们的查询。

var date = DateTime.UtcNow.AddDays(-10);
var actualExpression = TestExpression<UserModel>( u => u.CreatedDate == date );

现在我们在将代码传递到表达式树之前对其进行预编译。

关于c# - 如何在没有 DynamicInvoke 的情况下编译 MethodCallExpression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666257/

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