Не работает метод ImportReference - Mono.Cecil, Fody

111
18 февраля 2021, 11:10

Использую Fody.

Немного контекста: Вместо создания своего ткача я использую возможность создания in-solution ткача. (Прим. weaver = ткач (в переводе), следуя терминологии из описания Fody) То есть я создаю в одном решении два проекта - целевой и проект-ткач. Я хочу сделать shared-project ткача (вместо распространения через nuget), который будет реализовывать концепцию, схожую с PostSharp. Ну если я, конечно, не ошибся с тем, как это там работает, т.к. вникать в такой жадный проприетарный инструмент не захотелось. Принцип работы такой: создаем атрибуты-ткачи, которые отнаследованы от специальных классов, описанных в библиотеке AOPHelpers. Мой ткач ищет помеченные этим атрибутом классы, методы и тп. У каждого атрибута есть метод Execute, который с помощью позднего связывания выполняется моим проектом-ткачом.

Таким образом, мы имеем связку Mono.Cecil + System.Reflection. Чтобы не было конфликтов, при записи файла Mono.Cecil я вручную считываю байты сборки, и использую нужную перегрузку метода Assembly.Load.

Проблема с методом ModuleDefinition.ImportReference. Он вроде срабатывает, что-то возвращает (TypeReference), но вызов Resolve, чтобы получить TypeDefiniton молча выдает null: Я не знаю как это работает, но TypeReference возможно привести к TypeDefinition и в одном месте кода это срабатывает, но в моей проблемной строке нет (падает с каст-эксепшин). Кстати, отладчик не работает, кто знает, чем это можно компенсировать(кроме логирования...)?

Ссылка на клон проекта.

READ ALSO
Вопрос по полиморфизму

Вопрос по полиморфизму

Как объекту класса kvadrat вызвать методы класса rectangle, а потом опять вызывать методы kvadrat??

110
Как вывести результат в POST контроллера?

Как вывести результат в POST контроллера?

Собственно создал представление

98
Ошибка преобразования типа IPoint в JSON

Ошибка преобразования типа IPoint в JSON

В таблице базы данных PostgreSQL есть столбец (nodeCoordinates) где хранятся координаты (тип geography)Данный столбец связан с моделью в приложении ASP

126
Как дублировать картинку?

Как дублировать картинку?

есть PictureBox1 который расположен на форме и он производит движение по таймеру

140