TypeBuilder.IsSecurityCritical Propiedad

Definición

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

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

Valor de propiedad

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

Excepciones

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

Comentarios

Las IsSecurityCriticalpropiedades , IsSecuritySafeCriticaly IsSecurityTransparent informan del nivel de transparencia del tipo, según lo 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 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 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 la 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