TypeBuilder.IsSecuritySafeCritical 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 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 para segurança; false
se for crítico para a segurança ou transparente.
Exceções
O tipo dinâmico atual não foi criado chamando o método CreateType().
Comentários
As propriedades , e relatam o nível de transparência do tipo, conforme determinado pelo IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent 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 níveis de transparência no assembly. Por exemplo, se o assembly dinâmico for de segurança crítica, 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 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>) sobrecarga do AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>) método, 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 transparent não pode emitir código de segurança crítica ou de segurança segura. Os atributos devem ser especificados quando o assembly dinâmico é criado ou não têm efeito até que o assembly tenha sido salvo no disco e recarregado.
Observação
A herança padrão é limitada à avaliação de transparência do tempo de execução. Nenhum atributo é aplicado ao assembly dinâmico. Se você quiser adicionar atributos de segurança, você mesmo deve aplicá-los.
Para obter mais informações sobre emissão de reflexo e transparência, consulte problemas de segurança em emissão de reflexo. Para obter informações sobre transparência, consulte Security Changes.