Demandas de herança

Exigências de herança aplicadas às classes têm um significado diferente das demandas de herança aplicada aos métodos. Você pode colocar as demandas de herança na classe em nível de servidor para garantir que somente o código com a permissão especificada pode ser herdada da classe. Exigências de herança colocadas em métodos exigem que o código tem a permissão especificada substitua o método.

Dica

Um novo modelo de transparência foi introduzido em .NET Framework 4.O modelo de Código transparente de segurança, nível 2 identifica o código seguro com SecurityCriticalAttribute ou atributo de SecuritySafeCriticalAttribute.o código crítico de segurança exige os chamadores e os inheritors a ser totalmente confiáveis.Qualquer tipo ou membro que herda de um tipo ou membro de segurança crítico deve ser segurança crítico ou segurança-seguro- crítico.Os assemblies que usam as regras de segurança de acesso do código anteriores (nível 1) podem chamar o nível 2 tipos e membros de segurança importantes se são confiáveis por meio de.Porém, os tipos de nível 2 e os membros devem especificamente identificar as demandas de herança, como as regras implícitas de herança de nível 2 não se aplicam aos visitantes de nível 1.

Demandas de herança da classe

Uma procura herdada aplicada a uma classe tem o efeito de requerer que todas as classes derivadas da classe pai têm a permissão especificada. Por exemplo, se a classe B é herdada de A classe e a A classe é protegida por uma procura de herança, B deve ter permissão para executar. Se a classe B é concedida a permissão e se deriva de A classe, a classe C também deve ter a permissão necessária por, se for derivar de B. Essa solicitação pode ser aplicada somente declarativa imposta.

O exemplo de código a seguir usa uma procura de herança para exigir que qualquer classe que herde da classe de MyClass1 deve ter a permissão personalizado CustomPermissionAttribute. Essa permissão é uma permissão personalizada hipotética, e não existe no .NET Framework. A demanda é feita passando CustomPermissionAttribute um valor de enumeração SecurityAction.InheritanceDemand .

<CustomPermissionAttribute(SecurityAction.InheritanceDemand)> _
Public Class MyClass1
    Public Sub New()
    End Sub 
   
    Public Overridable Function ReadData() As String
        ' Access a custom resource.
    End Function
End Class    
[CustomPermissionAttribute(SecurityAction.InheritanceDemand)]
public class MyClass
{
    public MyClass()
    {    
    }   

    public virtual string ReadData()
    {
        // Access a custom resource.
    }
}

Demandas de herança do método

Colocar uma procura de herança em um método estático na classe base não tem nenhum impacto em classes derivadas porque os métodos estáticos não estão relacionados. No entanto, coloque uma procura de herança em qualquer método não estático na classe base tem o mesmo efeito que a procura de herança na classe. Todos os métodos na classe derivada, incluindo o construtor da classe, devem atender a procura de herança.

Consulte também

Conceitos

Demandas de segurança

Criando suas próprias permissões de acesso do código

Adicionando suporte à segurança declarativa

Outros recursos

Estendendo metadados por meio de atributos

Segurança de acesso do código