Compartilhar 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.

public:
 virtual property bool IsSecuritySafeCritical { bool get(); };
public override bool IsSecuritySafeCritical { get; }
member this.IsSecuritySafeCritical : bool
Public Overrides ReadOnly Property IsSecuritySafeCritical As Boolean

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.

Observação

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

Confira também