TypeBuilder.IsSecurityCritical Propriedade

Definição

Obtém um valor que indica se o tipo atual é crítico à segurança ou à segurança crítico 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 de segurança crítico; false se for transparente.

Exceções

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

Comentários

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

Nível de segurança IsSegurancaCritica IsSecuritySafeCritical IsSecurityTransparent
Crítico true false false
Crítico para segurança 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 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>)AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)método ou AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) o método 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 não entram em vigor até que o assembly tenha sido salvo em disco e recarregado.

Note

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, você deve aplicá-los por conta própria.

Para obter mais informações sobre reflection emit e transparência, consulte Problemas de segurança na reflection emit. Para obter informações sobre transparência, consulte Alterações de segurança.

Aplica-se a

Confira também