25

我不得不跳过篮球,但我几乎设法在我的项目中ServiceStack开始使用 iOS 。Monotouch一个运行时JIT异常是坚持:

System.ExecutionEngineException: Attempting to JIT compile method 'ServiceStack.Text.Json.JsonTypeSerializer:GetWriteFn<int> ()' while running with --aot-only. 

有问题的代码非常简单:

   internal WriteObjectDelegate GetWriteFn<T>()
    {
        return JsonWriter<T>.WriteFn();
    }

作为测试,我修改了 SS 代码以公开内部方法和类型,并在我的项目的启动代码中包含以下内容(实际被调用)。

var ick = ServiceStack.Text.Json.JsonWriter<int>.WriteFn();
var erk = ServiceStack.Text.Json.JsonTypeSerializer.Instance.GetWriteFn<int>();

由于某种原因,这仍然没有提醒 AOT,当上面的代码执行时我得到了异常!这是因为泛型参数是值类型吗?还是因为这些是静态类和方法?如何强制 Monotouch 使用上述方法进行 AOT?

有问题的 SS 代码位于 JsonTypeSerializer.cs 和 JsonWriter.Generic.cs 中: https ://github.com/ServiceStack/ServiceStack.Text/tree/master/src/ServiceStack.Text/Json

4

1 回答 1

1

现在 monotouch有一些通用的限制。我认为您应该检查其中之一的代码。

于 2013-07-21T11:00:31.290 回答