DynamicMethod.IsSecurityTransparent Propriedade

Definição

Obtém um valor que indica se o método dinâmico atual é transparente ao nível de confiança atual e, portanto, não pode realizar operações 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 Propriedade

true se o método dinâmico for transparente em termos de segurança ao nível de confiança atual; caso contrário, false.

Exceções

O método dinâmico não tem um corpo de método.

Observações

As IsSecurityCriticalpropriedades , IsSecuritySafeCritical, e IsSecurityTransparent reportam o nível de transparência do método dinâmico determinado pelo tempo de execução da linguagem comum (CLR). As combinações destas propriedades são apresentadas na tabela seguinte:

Nível de segurança ÉCríticoParaSegurança IsSecuritySafeCritical IsSecurityTransparent
Crítico true false false
Segurança crítica true true false
Transparent false false true

Usar essas propriedades é muito mais simples do que examinar as anotações de segurança de um assembly e seus tipos, verificar o nível de confiança atual e tentar duplicar as regras do tempo de execução.

A transparência de um método dinâmico depende do módulo a que está associado. Se o método dinâmico estiver associado a um tipo em vez de um módulo, a sua transparência depende do módulo que contém o tipo. Os métodos dinâmicos não têm anotações de segurança, pelo que lhes é atribuída a transparência padrão para o módulo associado.

  • Métodos dinâmicos alojados anonimamente são sempre transparentes, porque o módulo fornecido pelo sistema que os contém é transparente.

  • A transparência de um método dinâmico associado a um assembly de confiança (isto é, um assembly com nome forte instalado na cache global de assembly) é descrita na tabela seguinte.

    Anotação de montagem Transparência de Nível 1 Transparência de Nível 2
    Totalmente transparente Transparent Transparent
    Totalmente crítico Crítico Crítico
    Transparência mista Transparent Transparent
    Agnóstico em termos de segurança Segurança crítica Crítico

    Por exemplo, se associar um método dinâmico a um tipo que está em mscorlib.dll, que tem transparência mista de nível 2, o método dinâmico é transparente e não pode executar código crítico. Para informações sobre níveis de transparência, consulte Código Security-Transparent, Nível 1 e Código Security-Transparent, Nível 2.

    Note

    Associar um método dinâmico a um módulo numa assembly de nível 1 confiável que seja independente de segurança, como System.dll, não permite elevação de confiança. Se o conjunto de concessões do código que chama o método dinâmico não incluir o conjunto de concessões de System.dll (isto é, confiança total), SecurityException é lançado quando o método dinâmico é chamado.

  • A transparência de um método dinâmico associado a um conjunto parcialmente confiável depende de como o conjunto é carregado. Se o assembly estiver carregado com confiança parcial (por exemplo, num domínio de aplicação sandbox), o runtime ignora as anotações de segurança do assembly. O conjunto e todos os seus tipos e membros, incluindo métodos dinâmicos, são tratados como transparentes. O runtime presta atenção às anotações de segurança somente se o assembly de confiança parcial estiver carregado com confiança total (por exemplo, no domínio de aplicação padrão de uma aplicação de ambiente de trabalho). Nesse caso, o tempo de execução atribui ao método dinâmico a transparência padrão para os métodos de acordo com as anotações do assembly.

Para mais informações sobre emissão por reflexão e transparência, consulte Questões de Segurança em Emissão por Reflexão. Para informações sobre transparência, consulte Alterações de Segurança.

Aplica-se a

Ver também