【发布时间】:2020-03-11 12:01:31
【问题描述】:
MSDN:.NET Native 是提前 (“AOT”) 编译:它在您编译时将您的代码转换为本机机器代码
我想知道它如何处理泛型?
【问题讨论】:
-
可能与即时 (JIT) 编译的方式相同。您有什么理由特别询问泛型吗?
-
更有资格的人可能肯定知道,但处理泛型的常用方法是 (A) 为使用的每个类型集生成一个单独的版本 (G -> G_of_A, G -> G_of_B),或 (B) 向下转换为通用容器类型(因此 G
将是真正的 G -
只是没有什么不同。唯一可能的复杂情况是 .NETNative 需要知道您的代码使用的所有类型参数。这很简单,因为它在编译完所有代码后运行,它可以访问程序使用的所有程序集。这也是它仅支持 appx 包的原因,它可以毫不费力地确定您实际使用的程序集,因为它们已在清单中列出。它唯一不能可靠地做的是检测您通过反射激活的代码,这就是您必须帮助处理 rd.xml 文件的地方。
-
正如他们所描述的,它是 AOT 编译(提前)。在运行代码之前,运行时无法知道某些泛型类型。通常泛型对 AOT 不友好,它们的类型定义在运行时维护在内存中
标签: .net uwp .net-native