Segurança declarativa usada no escopo de classes e membros

A segurança declarativa pode ser executada em classes, membros, e em classes aninhadas. Esta seção descreve as regras usadas para avaliar a segurança declarativa quando aplicado a vários níveis da mesma classe.

Importante

Em .NET Framework 4, o suporte de tempo de execução foi removido impor Deny, RequestMinimum, RequestOptional, e solicitações de permissão de RequestRefuse .Essas solicitações não devem ser usadas em código que é baseado em .NET Framework 4 ou posterior.Para obter mais informações sobre isso e outras alterações, consulte Alterações na segurança do .NET Framework.

Classes, membros, e segurança declarativa

Quando há uma segurança declarativa para a mesma ação de segurança no nível da classe e o nível de método, segurança declarativa será aplicada de acordo com a seguinte tabela.

Ação de segurança

Comportamento NET data provider do versão 2,0 da estrutura

comportamento de.NET Framework 4

Procura

Os atributos de nível de método e os atributos de nível classe unioned juntos em um único conjunto de permissões para ambos os níveis.

Nenhuma alteração de comportamento.

Procura de link

Os atributos de nível de método e os atributos de nível unioned classe.

Nenhuma alteração de comportamento.

Procura de herança

Os atributos de nível classe exigem a permissão especificada para derivar da classe.

Os atributos de nível de método exigem a permissão especificada para substituir o método em uma classe derivada.

Como as demandas de herança têm significados diferentes para classes e métodos, as instruções podem ser aplicadas aos níveis da classe e o método independente.

Nenhuma alteração de comportamento.

Assert

Os atributos de nível de método e os atributos de nível classe unioned juntos em um único conjunto de permissões para ambos os níveis.

Nenhuma alteração de comportamento.

Deny

Os atributos de nível de método e os atributos de nível classe unioned juntos em um único conjunto de permissões para ambos os níveis.

Obsoleto em .NET Framework 4.

Licença apenas

Os atributos de nível de método e os atributos de nível classe são cruzados juntos em um único conjunto de permissões para ambos os níveis.

Nenhuma alteração de comportamento.

Se as ações de segurança são diferentes (por exemplo, uma pesquisa na classe no nível com declarar ao nível de método), não haverá nenhuma interação qualquer e ambos são avaliados.

Classes aninhadas e segurança declarativa

Quando você aplicar a segurança declarativa a classes, não propaga a nenhum classes ou métodos aninhada de classes aninhadas. Por outro lado, quando você aplicar a segurança declarativa a classes ou métodos aninhados de uma classe aninhada, não se propaga às classes do pai de. Você deve aplicar a segurança declarativa a classes aninhadas como se fossem classes separadas.

O exemplo a seguir mostra uma permissão hipotética necessária na classe em nível de uma classe chamada Main. Dentro dessa classe, uma classe chamada Nested aninhada é definida. Neste exemplo, a procura não se aplica à classe aninhada.

<SomePermissionAttribute(SecurityAction.Demand, Unrestricted:=True)> _
Public Class Main
    ' This nested class is not influenced by the demand.
    Public Class Nested
        ' This method is not influenced by the demand.
        Public Sub MyMethod()
        End Sub
    End Class
End Class
[SomePermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
class Main
{
    // This nested class is not influenced by the demand.
    class Nested
    {
        // This method is not influenced by the demand.
        public void MyMethod()
        {   
        }
    }
}

Consulte também

Conceitos

Demandas de segurança

Outros recursos

Segurança de acesso do código