TypeBuilder.IsSecurityCritical Propriedade
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 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
true
se o tipo atual for crítico de segurança ou crítico para a segurança; false
se for transparente.
O tipo dinâmico atual não foi criado chamando o método CreateType().
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.
Produto | Versões |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.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 |
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: