Condividi tramite


CA2126: Per le richieste di collegamento dei tipi sono necessarie richieste di ereditarietà

Articolo Valore
ID regola CA2126
Category Microsoft.Security
Modifica Interruzione

Causa

Un tipo pubblico non bloccato è protetto con una richiesta di collegamento, ha un metodo sottoponibile a override e né il tipo né il metodo è protetto con una richiesta di ereditarietà.

Nota

Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.

Descrizione regola

Una richiesta di collegamento su un metodo o il relativo tipo dichiarante richiede che il chiamante immediato del metodo disponga dell'autorizzazione specificata. Una richiesta di ereditarietà su un metodo richiede un metodo di override per avere l'autorizzazione specificata. Una richiesta di ereditarietà su un tipo richiede una classe di derivazione per avere l'autorizzazione specificata.

Come correggere le violazioni

Per correggere una violazione di questa regola, proteggere il tipo o il metodo con una richiesta di ereditarietà per la stessa autorizzazione della richiesta di collegamento.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

Nell'esempio seguente viene illustrato un tipo che viola la regola.

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

CA2108: Controllare la sicurezza dichiarativa sui tipi di valori

CA2112: I tipi protetti non devono esporre campi

CA2122: Non esporre in modo indiretto metodi con richieste di collegamento

CA2123: Le richieste di collegamento negli override devono essere identiche a quelle nei metodi di base

Vedi anche