DynamicMethod.IsSecurityTransparent Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un valor que indica si el método dinámico actual es transparente en el nivel de confianza actual y, por tanto, no puede realizar operaciones críticas.
public:
virtual property bool IsSecurityTransparent { bool get(); };
public override bool IsSecurityTransparent { get; }
member this.IsSecurityTransparent : bool
Public Overrides ReadOnly Property IsSecurityTransparent As Boolean
Valor de propiedad
true
si el método dinámico es transparente en seguridad en el nivel de confianza actual; en caso contrario, false
.
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, Código transparente de 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 presta atención a las anotaciones de seguridad solo 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 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.