- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 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/
我有一个方法Method private static int Method(int n) { return n; } 我在我的 ExpressionVisitor 中覆盖了 VisitMet
如果我有一个方法名称和方法的参数,我如何为该方法创建一个 MethodCallExpression? 这是一个示例方法: public void HandleEventWithArg(int arg)
我正在尝试使用表达式树构建一个 lambda 查询,以使其在整个应用程序中通用。我最初的尝试基于找到的代码 here .我更改了代码,以便它执行比较以返回 100 个实体,这些实体的 LastName
我正在努力让我的用户更方便地使用我的图书馆。 我有一个接口(interface) I 和一个类 A ... public interface I { int f(int i); } publi
我正在尝试使用 ExpressionVisitor 来修改调用方法的表达式,但未能成功。我有一个 SearchService 封装了搜索逻辑,并希望能够修改传递的搜索参数。 应修改并运行 Search
我正在尝试实现以下代码: db.Invoices.Where(x => Dimensions.All(y => x.DimensionSet.Entries.Any(dim => (d.Dimensi
我正在玩 Roslyn CTP nuget 包,我想我会熟悉 SyntaxVisitor<>类,所以我正在创建一个 Roslyn.Compilers.CSharp.SyntaxNode至 System
我正在尝试学习表达式树,并且我创建了一个方法 Expression> 如果满足某些条件则执行它 - 请参阅下面的代码。 private static void TryCommand(E
如何获取 MethodCallExpression 的参数值? 今天我这样做了,但是速度不够快: private static object GetArgumentValue(Expression e
我有一个带有 select 的 Linq 查询,从我的 Linq 查询提供程序那里我得到一个包含 MethodCallExpression 的表达式树,但只是如何从 MethodCallExpress
我希望使用表达式树创建以下 Linq 表达式: var result2 = soldiers.OrderByDescending(soldier => soldier.Ranks.OrderBy(r=
我有一个查询,我需要对其应用 n 个过滤器。但是我必须使用表达式。到目前为止,我已经为每个过滤器构造了表达式,效果很好。问题是我想将这些过滤器连接到一个表达式中,这样我就可以将它用作 LINQ 的 .
无论维度如何,索引数组都是一种方法调用,因为它涉及调用索引器运算符。 那为什么方法重载了System.Linq.Expressions.Expression.ArrayIndex那takes a si
我有一个 MethodCallExpression 包含这样的日期调用 DateTime.UtcNow.AddDays(-10); 我希望能够将其编译成它所代表的实际日期,但由于我使用的是 Xamar
这是一个打印MethodCallExpression 方法签名的简单应用程序: using System; using System.Linq; using System.Linq.Expressio
在为 GET 请求执行之前,我需要向 MethodCallExpression 添加参数 这是加载所有员工的 OData GET 请求: server/employees?$filter=birthd
我正在尝试创建一个带有方法调用的通用表达式 Enumerable.Contains 所以基本上我想实现这个简单的 lambda x => collection.Contains(x.SomePrope
给定以下类: public class MyClass { private readonly UrlHelper _urlHelper; // constructor left out
以下代码抛出此异常的原因是什么,说“表达式必须是 MethodCallExpression。我认为调用 Action 是...... Action startBouncePolling =
我有一个处理 MethodCallExpression 的自定义 LINQ 提供程序有一个 OrderBy其中的子句。我怎样才能得到 OrderBy条款以便我可以处理它? 最佳答案 我想通了,这是方法
我是一名优秀的程序员,十分优秀!