MonoTouch では、値の型に型のジェネリック型パラメーターを使用するディクショナリを持つジェネリック型を作成するときに、AOT コンパイラは必要なディクショナリ型を構築しないため、iOS デバイスで実行しようとするとランタイム エラーが発生します。 JIT コンパイラーを呼び出します。
public class Foo<T>
{
private Dictionary<int, T> d = new Dictionary<int, T>();
...
}
var foo = new Foo<string>(); // Runtime error.
プログラムの他の場所で必要な構築された型を明示的に宣言することを含む回避策 ( Catalysts ブログに投稿) があります。
var x = new Dictionary<int, string>();
しかし、それは少し面倒です。より良い回避策はありますか?
また、すべての情報はコンパイル時に存在するように思われるため、AOT コンパイラーは必要な型を構築できるはずです。したがって、これは実行可能なコンパイラ機能ですか (将来のリリースで取得できる可能性があります)?