Чтобы использовать AppDomain.CreateDomain для создания изолированного домена приложения, необходимо передать PermissionSet, который содержит только те разрешения, которые вы хотите предоставить изолированным сборкам.Если вы не хотите предоставлять ReflectionPermission, вам просто не следует добавлять его в набор разрешений.
При этом ReflectionPermission далеко не единственное «опасное» разрешение, которое обычно должно быть отказано общему источнику.надстроек.Если вы хотите быть очень строгим, вы можете рассмотреть возможность предоставления только SecurityPermission \ Execution. например, :
PermissionSet permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
Если вы хотите включить дополнительные «безопасные» разрешения, вы можете просто добавить их в набор разрешений, используя дополнительные вызовы AddPermission.Если вы хотите включить все разрешения, которые считались достаточно безопасными для предоставления кода из Интернета, в устаревшую систему политик CAS, вы можете извлечь их, передав свидетельство интернет-зоны статическому методу SecurityManager.GetStandardSandbox. например, :
Evidence evidence = new Evidence();
evidence.AddHostEvidence(new Zone(SecurityZone.Internet));
PermissionSet permissionSet = SecurityManager.GetStandardSandbox(evidence);
NB : Оба этих подхода описаны в статье MSDN , на которую вы ссылались в своем вопросе.