Ler em inglês

Partilhar via


TypeBuilder.IsSecuritySafeCritical Propriedade

Definição

Obtém um valor que indica se o tipo atual é crítico para segurança e disponível no código transparente, ou seja, se pode executar operações críticas e ser acessado por código transparente.

C#
public override bool IsSecuritySafeCritical { get; }

Valor da propriedade

true se o tipo atual for crítico à segurança; false se for crítico de segurança ou transparente.

Exceções

O tipo dinâmico atual não foi criado chamando o método CreateType().

Comentários

As IsSecurityCriticalpropriedades , IsSecuritySafeCriticale IsSecurityTransparent relatam o nível de transparência do tipo, conforme determinado pelo CLR (Common Language Runtime). As combinações destas propriedades são mostradas na seguinte tabela:

Nível de segurança IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Crítico true false false
Crítico para segurança true true false
Transparente false false true

Usar essas propriedade é muito mais simples que examinar as anotações de segurança de um assembly e seus tipos, verificando o nível de confiança atual e tentando duplicar as regras do runtime.

O runtime começa a avaliar os níveis de transparência no assembly. Por exemplo, se o assembly dinâmico for crítico à segurança, as anotações nos tipos serão ignoradas e todos os tipos serão críticos à segurança.

Por padrão, um assembly dinâmico herda a transparência do assembly que o emite. Você pode substituir esse padrão usando a sobrecarga do AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)método , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)ou AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) e especificando atributos de segurança. Você não pode elevar os níveis de segurança fazendo isso; ou seja, o código transparente não pode emitir código crítico de segurança ou de segurança crítica. Os atributos devem ser especificados quando o assembly dinâmico é criado ou eles não têm efeito até que o assembly seja salvo no disco e recarregado.

Nota

A herança padrão é limitada à avaliação da transparência do runtime. Nenhum atributo é aplicado ao assembly dinâmico. Se você quiser adicionar atributos de segurança, deverá aplicá-los por conta própria.

Para obter mais informações sobre emissão de reflexão e transparência, consulte Problemas de segurança na emissão de reflexão. Para obter informações sobre transparência, consulte Alterações de segurança.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided), 2.1

Confira também