首页 > 解决方案 > 在创建/完成封闭类型之前如何使用嵌套类型构建器?

问题描述

我目前正在为 msil 使用的自定义编程语言开发一个编译器,System.Reflection.Emit我遇到了一个困扰我好几天的问题。我正在创建一个充当模块的类型,因此它包含类型和函数定义。这意味着,我正在创建一个类型,然后将其引用为例如稍后在函数中的局部变量的类型。这就是问题所在,因为我之前定义的类型显然已经完成了,但是当我调用ILGenerator.DefineLocal([type])它时会抛出TypeLoadException无法加载封闭类型的说法。我想,这是因为它还没有被创建/完成。

我将如何解决这个问题,同时仍将定义的类型保持为封闭模块类型的 NestedType?

标签: c#compiler-constructioncilsystem.reflection

解决方案


推荐阅读