1

在 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.

有一个变通方法(发布在 Catalysts 博客上),其中涉及显式声明程序其他地方所需的任何构造类型:

var x = new Dictionary<int, string>();

但这有点乱。有更好的解决方法吗?

此外,在我看来,所有信息在编译时都已存在,因此 AOT 编译器应该能够构造所需的类型。因此,这是一个可行的编译器功能吗(我们可能会在未来的版本中获得)?

4

1 回答 1

0

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

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

于 2013-06-28T00:31:27.427 回答