Я генерирую (используя System.Reflection.Emit) два типа: назовите их foo, bar. Ловушка, foo создает экземпляр и вызывает bar, а bar использует foo.два TypeBuilders, называющих друг друга незаконными?
Все работает нормально, когда я создаю бар, но когда я начинаю генерировать foo, я получаю typeloadexception, говоря, что тип foo не может быть найден. Это случается (вероятно, поскольку ошибка была неопределенной), когда я пытаюсь найти конструктор в bar, который как один из его параметров принимает foo.
Это работает, когда бар вложен в тип foo.
Так что мой вопрос: неправомерно ли иметь два типа, называющих друг друга подобным образом, или я делаю это неправильно?
Оказывается, ошибка лежала где-то в другом месте. Метод, который bar, вызываемый в foo, был защищен, поэтому жизнь была хорошей, когда бар был вложен в foo, когда я переместил его, он не смог вызвать этот метод. Я снова сменил его на публику и на жизнь. Оказывается, SRE и 2am не смешиваются. Спасибо в любом случае. –