Compartir a través de


DynamicMethod.IsSecuritySafeCritical Propiedad

Definición

Obtiene un valor que indica si el método dinámico actual es crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual; 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 método dinámico es crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual; false si es crítico para la seguridad o transparente.

Excepciones

El método dinámico no tiene un cuerpo de método.

Comentarios

Las IsSecurityCriticalpropiedades , IsSecuritySafeCriticaly IsSecurityTransparent notifican el nivel de transparencia del método dinámico 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.

La transparencia de un método dinámico depende del módulo al que está asociado. Si el método dinámico está asociado a un tipo en lugar de a un módulo, su transparencia depende del módulo que contiene el tipo. Los métodos dinámicos no tienen anotaciones de seguridad, por lo que se les asigna la transparencia predeterminada para el módulo asociado.

  • Los métodos dinámicos hospedados de forma anónima siempre son transparentes, ya que el módulo proporcionado por el sistema que los contiene es transparente.

  • La transparencia de un método dinámico asociado a un ensamblado de confianza (es decir, un ensamblado con nombre seguro instalado en la caché global de ensamblados) se describe en la tabla siguiente.

    Anotación de ensamblado Transparencia de nivel 1 Transparencia de nivel 2
    Totalmente transparente Transparente Transparente
    Totalmente crítico Crítico Crítico
    Transparencia mixta Transparente Transparente
    Independiente de la seguridad Crítico para la seguridad Crítico

    Por ejemplo, si asocia un método dinámico con un tipo que se encuentra en mscorlib.dll, que tiene transparencia mixta de nivel 2, el método dinámico es transparente y no puede ejecutar código crítico. Para obtener información sobre los niveles de transparencia, vea Código transparente de seguridad, Nivel 1 y Código transparente de seguridad, Nivel 2.

    Nota

    La asociación de un método dinámico con un módulo en un ensamblado de nivel de confianza 1 independiente de la seguridad, como System.dll, no permite la elevación de confianza. Si el conjunto de concesión del código que llama al método dinámico no incluye el conjunto de concesión de System.dll (es decir, plena confianza), SecurityException se produce cuando se llama al método dinámico.

  • La transparencia de un método dinámico asociado a un ensamblado de confianza parcial depende de cómo se cargue el ensamblado. Si el ensamblado se carga con confianza parcial (por ejemplo, en un dominio de aplicación de espacio aislado), el tiempo de ejecución omite las anotaciones de seguridad del ensamblado. El ensamblado y todos sus tipos y miembros, incluidos los métodos dinámicos, se tratan como transparentes. El tiempo de ejecución solo presta atención a las anotaciones de seguridad si el ensamblado de confianza parcial se carga con plena confianza (por ejemplo, en el dominio de aplicación predeterminado de una aplicación de escritorio). En ese caso, el tiempo de ejecución asigna al método dinámico la transparencia predeterminada para los métodos según las anotaciones del ensamblado.

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