我正在制作一个.NET 兼容的编译器,今天我遇到了一个非常奇怪的错误。我正在测试字段获取器,有时我会MissingFieldException
使用一些内置类型的字段。
我困扰的领域是:
MaxValue
所有数字的MinValue
所有数字的double.PositiveInfinity
double.NegativeInfinity
double.NaN
代码编译良好:在编译期间,FieldInfo
找到并发出相应ldsfld
的。然而,在运行阶段,上述异常被抛出。这只发生在某些领域:Type.EmptyTypes
按预期编译和工作!
我试图研究csc
为这些字段发出的 IL 代码,但它做了一些优化,程序只是将实际值推送到堆栈而不是调用字段。虽然这显然是一种更有效的方法,但现在我想让我的编译器尽可能简单。
有没有人遇到过类似的问题?