В настоящее время я работаю над компилятором для пользовательского языка программирования msil, используя System.Reflection.Emit
, и я столкнулся с проблемой, которая беспокоила меня уже несколько дней.Я создаю тип, который действует как модуль, поэтому он содержит определения типов и функций.Это означает, что я создаю тип и затем ссылаюсь на него как, например, на тип локальной переменной в функции позже.Вот в чем проблема, потому что тип, который я определил ранее, очевидно, завершен, но когда я вызываю ILGenerator.DefineLocal([type])
, он выдает TypeLoadException
, говоря, что не может быть загружен включающий тип.Я предполагаю, что это потому, что он еще не был создан / завершен.
Как бы я решил эту проблему, сохраняя при этом определенный тип NestedType для типа включающего модуля?