MonoTouch AOT编译器不在泛型类中构造字典类型

时间:2012-05-24 06:10:02

标签: c# generics xamarin.ios aot

在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编译器应该能够构造所需的类型。因此,这是一个可行的编译器功能(我们可能会在将来的版本中使用)吗?

1 个答案:

答案 0 :(得分:0)

现在已修复此问题,因此无需解决方法:

https://bugzilla.xamarin.com/show_bug.cgi?id=5316