Подтвердить что ты не робот

Можно ли пропускать проверки видимости при генерации динамического IL с помощью метода MethodBuilder?

При генерации IL с помощью DynamicMethod можно вызвать методы и поля доступа, которые в противном случае были бы недоступны, если вы предоставите "true" для параметра limitedSkipVisibility в Конструктор DynamicMethod

Я бы предпочел испускать динамический ИЛ в динамическую сборку, чтобы я мог сохранить сгенерированный ИЛ в сборку во время сборки. Если я использую этот метод, я должен использовать MethodBuilder вместо DynamicMethod. Однако мне нужно пропустить проверки видимости, поэтому я не получаю MethodAccessException при запуске моего динамического кода. Есть ли способ сделать это, и если да, то как?

4b9b3361

Ответ 1

При использовании MethodBuilder в динамических сборках вы привязаны к тем же правилам, что и сборщики, сгенерированные компилятором. Таким образом, видимость между сборками определяется следующим образом:

Прочтите документацию и образцы, чтобы узнать, может ли она соответствовать вашим потребностям.

Ответ 2

если вам нужно материализовать свой сгенерированный код через интерфейс вместо делегирования, il будет полезен для skipVisibilityCheck для Methodbuilder. Я не нашел способ сделать это напрямую, но вы можете просто вызвать DynamicMethod в своем MethodBuilder, используя EmitCalli (OpCodes.Calli...).