Как разрешить изолированную сборку для загрузки определенных типов? - PullRequest
1 голос
/ 02 декабря 2011

Я создал класс песочницы, который использую для вызова методов в ненадежном коде.Я хочу, чтобы ненадежный код мог реализовывать интерфейс и иметь доступ к определенным классам справки.Вот как я загружаю сборку:

var assembly = Assembly.LoadFrom(assemblyPath);
assembly.GetTypes();

Вызов GetTypes () сгенерирует ReflectionTypeLoadException с исключением загрузчика, установленным в TypeLoadException :

"Нарушение правил безопасности наследования при переопределении элемента foo. Доступность безопасности переопределяющего метода должна соответствовать доступности безопасности переопределяемого метода."

Как можноЯ настроил свою среду песочницы, чтобы разрешить это?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Вы переопределяете член с атрибутом [SecurityCritical]?Если вы загружаете непубличную, прозрачную (частично доверенную) сборку, то это исключение будет выдано, если вы попытаетесь переопределить элемент SecurityCritical.

Дополнительные сведения о прозрачном коде безопасности см. В статье этой MSDN .В результате прозрачный (частично доверенный) код не может вызвать критический код безопасности.В частности, см. Этот раздел:

В этом разделе для прозрачного, критического и безопасного критического кода назначается следующий порядок на основе доступа и возможностей:

прозрачный <безопасный критический <критический </p>

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

  • Правила для методов: Производные методы не могут изменять доступность из базового метода.Для поведения по умолчанию все производные методы, которые не аннотированы, являются Прозрачными.Производные критических типов вызывают исключение, если переопределенный метод явно не аннотирован как SecurityCritical.

В частности, вторая точка маркера.

0 голосов
/ 02 декабря 2011

проверьте эту ссылку, она может дать вам некоторые ценные идеи

Динамически загружать класс и выполнять метод в .NET

...