25

私はフープを飛び越えなければなりませんでしたが、私のプロジェクトServiceStackで iOS で作業することがほぼできました。Monotouch1 つの実行時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>();

上記のコードを実行すると、例外が発生します。これは、ジェネリック パラメータが値型だからでしょうか。それとも、これらが静的なクラスとメソッドだからですか? 上記の方法で Monotouch を強制的に AOT にするにはどうすればよいですか?

問題の SS コードは、 https ://github.com/ServiceStack/ServiceStack.Text/tree/master/src/ServiceStack.Text/Json の JsonTypeSerializer.cs および JsonWriter.Generic.cs にあり ます。

4

1 に答える 1