TypeBuilder.IsSecuritySafeCritical Propiedad

Definición

Obtiene un valor que indica si el tipo actual es crítico para la seguridad y disponible desde código transparente; es decir, si puede realizar operaciones críticas y está disponible desde código transparente.

public:
 virtual property bool IsSecuritySafeCritical { bool get(); };
public override bool IsSecuritySafeCritical { get; }
member this.IsSecuritySafeCritical : bool
Public Overrides ReadOnly Property IsSecuritySafeCritical As Boolean

Valor de propiedad

true si el tipo actual es crítico para la seguridad y disponible desde código transparente; false si es crítico para la seguridad o transparente.

Excepciones

No se creó el tipo dinámico actual mediante una llamada al método CreateType().

Comentarios

Las IsSecurityCriticalpropiedades , IsSecuritySafeCriticaly IsSecurityTransparent notifican el nivel de transparencia del tipo, determinado por Common Language Runtime (CLR). Las combinaciones de estas propiedades se muestran en la tabla siguiente:

Nivel de seguridad IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Crítico true false false
Crítico para la seguridad true true false
Transparente false false true

Usar estas propiedades es mucho más fácil que examinar las anotaciones de seguridad de un ensamblado y sus tipos, comprobar el nivel de confianza actual e intentar duplicar las reglas del runtime.

El tiempo de ejecución comienza a evaluar los niveles de transparencia en el ensamblado. Por ejemplo, si el ensamblado dinámico es crítico para la seguridad, se omiten las anotaciones en los tipos y todos los tipos son críticos para la seguridad.

De forma predeterminada, un ensamblado dinámico hereda la transparencia del ensamblado que la emite. Puede invalidar este valor predeterminado mediante la sobrecarga del AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)método , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)o AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) y la especificación de atributos de seguridad. No se pueden elevar los niveles de seguridad haciendo esto; es decir, el código transparente no puede emitir código crítico para la seguridad o crítico para la seguridad. Los atributos se deben especificar cuando se crea el ensamblado dinámico o no surten efecto hasta que el ensamblado se haya guardado en el disco y se vuelva a cargar.

Nota

La herencia predeterminada se limita a la evaluación de transparencia del entorno de ejecución. No se aplican atributos al ensamblado dinámico. Si desea agregar atributos de seguridad, debe aplicarlos usted mismo.

Para obtener más información sobre la emisión y transparencia de la reflexión, vea Problemas de seguridad en emisión de reflexión. Para obtener información sobre la transparencia, consulte Cambios de seguridad.

Se aplica a

Consulte también