2012-04-04 1 views
6

Я портирую код, который широко использует DynamicMethod s, чтобы обеспечить предварительную компиляцию, для лучшей производительности холодного запуска. Я заметил, что DynamicMethod s может быть JITted и выполнен с пропущенными проверками видимости, что позволяет им получать доступ к закрытым вложенным типам, но обычные сборки не могут (или не могут они? Я не вижу никакой очевидной опции загрузчика). В чем смысл этого дизайнерского решения?Почему пропускаемые проверки видимости допускаются только для динамических методов?

+1

-unity, поскольку это не связано с Microsoft Unity. Вы можете прочитать это сообщение в блоге, http://davedewinter.com/2010/11/21/tip-22-dynamicmethods-in-partial-trust/ Это требует определенных разрешений для этого. Поэтому, если вы хотите ограничить такие попытки, вы можете. –

ответ

2

Мне нужно махнуть рукой, немного отвечая на этот вопрос, CAS навсегда сложно. Аргумент skipVisibility относится к доверенным хост-приложениям, которые генерируют код, который выполняется в изолированной программной среде. В таком случае нецелесообразно выполнять проверки, когда метод генерируется, поскольку среда выполнения неверна. Это должно произойти, когда метод выполняет внутри песочницы. Там, где он подвергается обычным проверкам CAS, выполняемым песочницей.

Установка аргумента в true на самом деле добавляет требование разрешения для ReflectionPermissionFlag.MemberAccess, необходимое для получения снимка при создании метода.

Topsy-turvy. Есть некоторая справочная информация в this MSDN article, «Добавление раздела RestrictedMemberAccess to Sandboxed Domains».

 Смежные вопросы

  • Нет связанных вопросов^_^