TypeBuilder.IsSecurityCritical Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.