26
我不得不跳過箍環,但我幾乎設法在我的項目中獲得ServiceStack
在iOS上使用Monotouch
。一個運行時JIT
異常被捧出來:如何強制Monotouch AOT編譯器查看嵌套泛型方法?
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上述方法?
有問題的擴頻碼是JsonTypeSerializer.cs和JsonWriter.Generic.cs在: https://github.com/ServiceStack/ServiceStack.Text/tree/master/src/ServiceStack.Text/Json
這看起來很奇怪。你能用一個測試用例在http://bugzilla.xamarin.com上提交一個bug嗎? –
如果存在相同的問題,序列化整數列表的唯一方法是:var serializedData =「[」+ string.Join(「,」,Ids.ToArray())+「]」; –