DynamicMethod.IsSecuritySafeCritical Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém um valor que indica se o método dinâmico atual é crítico de segurança ao nível de confiança atual; ou seja, se pode realizar operações críticas e se pode ser acedido por 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 Propriedade
true se o método dinâmico for crítico de segurança no nível de confiança atual; false Se for crítico para a segurança ou transparente.
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.