As demandas de link de tipo exigem demandas de herança
TypeName |
TypeLinkDemandsRequireInheritanceDemands |
CheckId |
CA2126 |
Category (Categoria) |
Microsoft.segurança |
Quebrando alterar |
Quebrando |
Causa
Um tipo público sem lacre é protegido com uma demanda de link, tem um método substituível e nem o tipo do método está protegido com uma demanda de herança.
Descrição da regra
Uma demanda de link em seu tipo declarativo ou um método requer que o chamador imediato do método têm a permissão especificada.Uma demanda de herança em um método exige um método de substituição para ter a permissão especificada.Uma demanda de herança em um tipo requer uma classe deriving ter a permissão especificada.
Como corrigir violações
Para corrigir uma violação dessa regra, proteja o tipo ou o método com uma demanda de herança para a mesma permissão sistema autônomo a demanda de link.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
O exemplo a seguir mostra um tipo que viola a regra.
Imports System
Imports System.Security.Permissions
Namespace SecurityLibrary
<EnvironmentPermission(SecurityAction.LinkDemand, Read:="PATH")> _
Public Class TypesWithLinkDemands
Protected Overridable Sub UnsecuredMethod()
End Sub
<EnvironmentPermission(SecurityAction.InheritanceDemand, Read:="PATH")> _
Protected Overridable Sub SecuredMethod()
End Sub
End Class
End Namespace
using System;
using System.Security.Permissions;
namespace SecurityLibrary
{
[EnvironmentPermission(SecurityAction.LinkDemand, Read = "PATH")]
public class TypesWithLinkDemands
{
public virtual void UnsecuredMethod() {}
[EnvironmentPermission(SecurityAction.InheritanceDemand, Read = "PATH")]
public virtual void SecuredMethod() { }
}
}
using namespace System;
using namespace System::Security::Permissions;
namespace SecurityLibrary
{
[EnvironmentPermission(SecurityAction::LinkDemand, Read = "PATH")]
public ref class TypesWithLinkDemands
{
protected:
virtual void UnsecuredMethod() {}
[EnvironmentPermission(SecurityAction::InheritanceDemand,
Read = "PATH")]
virtual void SecuredMethod() {}
};
}
Regras relacionadas
Analisar a segurança declarativa em tipos de valor
Tipos protegidos não devem expor campos
Não exponha indiretamente métodos com demandas de link
As demandas de link de substituir devem ser idênticas a base