Предположим, что у меня есть обработчик события AppDomain.AssemblyResolve, а в обработчике я строю массив байтов и вызывается метод Assembly.Load(byte[]). Может ли этот метод вызвать событие AssemblyResolve снова, и заставить мой обработчик быть повторно введен?
Мой вопрос не ограничивается только сборками, которые могут быть сгенерированы с использованием компилятора С#, они могут содержать метаданные abritrary и исполняемый код, поддерживаемые средой CLR.
Я сделал несколько экспериментов и не обнаружил случаев, когда это происходит. Я попытался загрузить сборки, требующие дополнительных ссылок, попытался добавить атрибуты CAS к загруженной сборке, для декодирования которой потребуется другая сборка, попытался загрузить сборку с инициализатором модуля (глобальный метод .cctor). Ни в коем случае я не заметил, что событие AssemblyResolve должно быть поднято из метода Assembly.Load(byte[]), это произошло только в том случае, если какой-то код позже попытался получить доступ к типам, методам или атрибутам в загруженной сборке. Но я могу кое-что упустить.