Para usar AppDomain.CreateDomain para crear un dominio de aplicación de espacio aislado, debe pasar un conjunto de permisos que contenga solo los permisos que desea otorgar a los ensamblados de espacio aislado. Si no desea otorgar ReflectionPermission, simplemente no debe agregarlo al conjunto de permisos.
Dicho esto, ReflectionPermission está lejos de ser el único permiso "peligroso" que normalmente debería denegarse a los complementos de fuente general. Si quiere ser muy estricto, puede considerar otorgar solo SecurityPermission \ Execution. p.:
PermissionSet permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
Si desea incluir permisos adicionales "seguros", sólo tiene que añadir al conjunto de permisos usando las llamadas AddPermission adicionales. Si desea incluir todos los permisos que se consideraron lo suficientemente seguros como para otorgarlos al código de origen de Internet en un sistema de políticas de CAS desfasado, puede extraerlos pasando la evidencia de la zona de Internet al método estático de SecurityManager.GetStandardSandbox. p.:
Evidence evidence = new Evidence();
evidence.AddHostEvidence(new Zone(SecurityZone.Internet));
PermissionSet permissionSet = SecurityManager.GetStandardSandbox(evidence);
N. B.: Ambos enfoques se describen en el MSDN article al que usted hizo referencia en su pregunta.
No olvide que el código malicioso * puede * acceder a miembros protegidos, al heredar de la clase. Sin embargo, no puede acceder a miembros protegidos de objetos existentes. – svick
Use la palabra clave 'sellada' para evitar que una clase sea heredada. – DevDelivery