Demandas de herança

Demandas de herança aplicadas a classes têm um significado diferente que aplicado a métodos de demandas de herança. Você pode colocar as demandas de herança no nível de classe para garantir que somente o código com a permissão especificada pode herdar de sua classe. Demandas de herança em métodos requerem que o código tem a permissão especificada para substituir o método.

Observação

Foi introduzido em um novo modelo de transparência a .NET Framework versão 4.O Código transparente para a segurança de nível 2 modelo identifica o código seguro com o SecurityCriticalAttribute ou SecuritySafeCriticalAttribute atributo.Código de segurança crítica exige chamadores e herdeiros seja totalmente confiável.Qualquer tipo ou membro que herda a partir de um tipo de segurança crítico ou membro deve ser crítica de segurança ou segurança safe-crítica.Assemblies de regras de segurança de acesso de código anteriores (nível 1) podem chamar os tipos de segurança crítica de nível 2 e confiáveis de membros se eles estão cheios.No entanto, os tipos de nível 2 e membros devem especificamente identificar demandas de herança, porque as regras de herança implícito de nível 2 não se aplicam aos chamadores de nível 1.

Demandas de herança de classe

Uma demanda herdada aplicada a uma classe tem o efeito de exigência que todas as classes derivadas da classe pai tem a permissão especificada. Por exemplo, se a classe b é herdar da classe a e classe a é protegido por uma demanda de herança, em seguida, B deve ser concedido essa permissão para executar. Se a classe b essa permissão é concedida e deriva da classe A, em seguida, de classe c deve também ter a permissão exigidos pela, se ele estiver derivar de b. Essa demanda pode ser aplicada apenas declarativamente.

O seguinte exemplo de código usa uma demanda de herança para exigir que qualquer classe que herda de MyClass1 classe deve ter a permissão personalizada CustomPermissionAttribute. Esta permissão é uma permissão personalizada hipotética e não existe na.NET Framework. A solicitação é feita, passando a CustomPermissionAttribute um SecurityAction.InheritanceDemand valor de enumeração.

<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 demanda de herança em um método estático na classe base não tem impacto em classes derivadas porque os métodos estáticos não estão relacionados. No entanto, colocar uma demanda de herança em qualquer método não estático na classe base tem o mesmo efeito como uma demanda de herança da classe. Todos os métodos na classe derivada, incluindo o construtor da classe devem atender à demanda de herança.

Consulte também

Conceitos

Estendendo metadados usando atributos

Demandas de segurança

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

Adicionando suporte a segurança declarativa

Segurança de Acesso de código