在MonoTouch中,当创建具有使用类型的泛型类型参数作为其值类型的Dictionary的泛型类型时,AOT编译器不会构造所需的Dictionary类型,从而导致iOS设备上的运行时错误它试图调用JIT编译器。
public class Foo<T>
{
private Dictionary<int, T> d = new Dictionary<int, T>();
...
}
var foo = new Foo<string>(); // Runtime error.
有一种解决方法(posted on the Catalysts blog)涉及明确声明程序中其他地方所需的任何构造类型:
var x = new Dictionary<int, string>();
但那有点乱。 有更好的解决方法吗?
另外,在我看来,所有信息都是在编译时存在的,因此AOT编译器应该能够构造所需的类型。因此,这是一个可行的编译器功能(我们可能会在将来的版本中使用)吗?