started mac instalar getting compile xamarin.ios servicestack aot

xamarin.ios - mac - xamarin ios getting started



¿Cómo obligar a Monotouch AOT Compiler a ver un método genérico anidado? (1)

Hay algunas limitations genéricas en monotouch ahora. Creo que deberías revisar tu código a uno de ellos.

Tuve que saltar a través de aros, pero casi logré que ServiceStack funcionara en iOS con Monotouch en mi proyecto. Una excepción JIT tiempo de ejecución es la espera:

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

El código ofensivo es bastante simple:

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

Como prueba, modifiqué el código SS para hacer públicos los tipos y métodos internos e incluí lo siguiente en el código de inicio de mi proyecto (para que me llamen).

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

Esto todavía no alerta al AOT por alguna razón, ¡recibo la excepción cuando se ejecuta el código anterior! ¿Es esto porque el parámetro genérico es un tipo de valor? ¿O es porque estos son clases y métodos estáticos? ¿Cómo puedo forzar a Monotouch a AOT los métodos anteriores?

El código SS en cuestión se encuentra en JsonTypeSerializer.cs y JsonWriter.Generic.cs en: https://github.com/ServiceStack/ServiceStack.Text/tree/master/src/ServiceStack.Text/Json