При использовании оператора typeof для типа, созданного с помощью TypeBuilder, оператор возвращает ноль.
Прежде всего, претензия верна. Если вы напишите эту программу, а затем остановите ее в отладчике и скажете «typeof (MyType)» в ближайшем окне, то в результате вы получите «null».
Мне любопытно, почему это происходит
Черт побери из меня. Если бы мне пришлось угадывать, я бы сказал, что, возможно, оценщик выражений обменивается данными с подсистемой отладки CLR, чтобы попытаться получить токен метаданных для типа по его имени, и CLR возвращает некоторый мусорный ноль-токен вместо того, чтобы выдавать ошибку ,
Спешу подчеркнуть, что это предположение; Я на самом деле не отлаживал.
Я начинаю думать, что это ошибка VS в ближайшем окне
Это кажется вероятным. Правильно, что он должен делать, это выдавать ошибку «тип или пространство имен« MyType »недопустимо в этой области». Ошибка почти наверняка будет в оценщике выражений среды выполнения C #, а не в самом непосредственном окне.
Спасибо, что привлекли мое внимание к этой проблеме. Я сообщу об ошибке сопровождающим оценщика выражений, и мы посмотрим, смогут ли они решить эту проблему.
как это предотвратить?
Если больно, когда вы печатаете "typeof (MyType)", тогда прекратите вводить это.