Partilhar via


TypeBuilder.IsSecurityCritical Propriedade

Definição

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

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

Valor da propriedade

true se o tipo atual for crítico de segurança ou crítico para a segurança; false se for 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 para a segurança, as anotações nos tipos serão ignoradas e todos os tipos serão críticos para a 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 crítico para segurança. Os atributos devem ser especificados quando o assembly dinâmico é criado ou não entram em vigor até que o assembly seja salvo em disco e recarregado.

Observação

A herança padrão é limitada à avaliação de 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