TypeBuilder.IsSecurityTransparent Propriedade

Definição

Obtém um valor que indica se o tipo atual é transparente e, portanto, não pode executar operações críticas.

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

Valor da propriedade

Boolean

true Se o tipo for de segurança transparente; caso contrário, false .

Exceções

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

Comentários

As IsSecurityCritical IsSecuritySafeCritical Propriedades,, e IsSecurityTransparent relatam o nível de transparência do tipo, conforme determinado pelo Common Language Runtime (CLR). 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 tempo de execução começa avaliando os 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.

Aplica-se a

Confira também