Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

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 em nível de classe para garantir que somente código com a permissão especificada pode herdar de sua classe. Demandas de herança colocadas em métodos exigem que o código tenha a permissão especificada para substituir o método.

Observação Observação

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 o atributo SecurityCriticalAttribute ou SecuritySafeCriticalAttribute. Código de segurança crítica exige que ambos os chamadores e herdeiros sejam totalmente confiáveis. Qualquer tipo ou membro que herda de um tipo ou membro de segurança crítica (security-critical) deve ser de segurança crítica ou de segurança crítica segura (security-safe-critical). 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.

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 MyClass
{
    public MyClass()
    {    
    }   

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

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.

Contribuições da comunidade

Mostrar: