TypeBuilder.IsSecuritySafeCritical Propiedad

Definición

Obtiene un valor que indica si el tipo actual es crítico para la seguridad; es decir, si puede realizar operaciones críticas y se puede acceder a ellas mediante 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; false si es crítico para la seguridad o es transparente.

Excepciones

El tipo dinámico actual no se ha creado llamando al CreateType() método .

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 EsCríticoParaLaSeguridad IsSecuritySafeCritical IsSecurityTransparent
Crítico true false false
Crítico para la seguridad true true false
Transparent false false true

El uso de estas propiedades es mucho más sencillo que examinar las anotaciones de seguridad de un ensamblado y sus tipos, comprobar el nivel de confianza actual e intentar duplicar las reglas del entorno de ejecución.

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 lo 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 puede 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 deben especificarse 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 aplica ningún atributo 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 reflejos, consulte Problemas de seguridad en la emisión de reflejos. Para obtener información sobre la transparencia, consulte Cambios de seguridad.

Se aplica a

Consulte también