Condividi tramite


CA1501: Evitare ereditarietà eccessiva

TypeName

AvoidExcessiveInheritance

CheckId

CA1501

Category

Microsoft.Maintainability

Breaking Change

Breaking

Causa

Un tipo si trova oltre il quarto livello di annidamento nella gerarchia di ereditarietà.

Descrizione della regola

Le gerarchie di tipi eccessivamente annidate possono comportare difficoltà di comprensione e gestione.Questa regola limita l'analisi alle gerarchie che si trovano all'interno dello stesso modulo.

Come correggere le violazioni

Per correggere una violazione di questa regola, derivare il tipo da un tipo di base meno annidato nella gerarchia di ereditarietà o eliminare alcuni dei tipi di base intermedi.

Esclusione di avvisi

L'esclusione di un avviso da questa regola è sicura.Tuttavia, il codice potrebbe essere più difficile da gestire.Si noti che, in base alla visibilità dei tipi di base, la risoluzione delle violazioni di questa regola potrebbe determinare modifiche importanti.La rimozione dei tipi di base pubblici, ad esempio, è una modifica importante.

Esempio

Nell'esempio riportato di seguito viene illustrato un tipo che viola la regola.

Imports System

Namespace MaintainabilityLibrary

   Class BaseClass
   End Class 

   Class FirstDerivedClass
      Inherits BaseClass
   End Class 

   Class SecondDerivedClass
      Inherits FirstDerivedClass
   End Class 

   Class ThirdDerivedClass
      Inherits SecondDerivedClass
   End Class 

   Class FourthDerivedClass
      Inherits ThirdDerivedClass
   End Class 

   ' This class violates the rule. 
   Class FifthDerivedClass
      Inherits FourthDerivedClass
   End Class 

End Namespace
using System;

namespace MaintainabilityLibrary
{
   class BaseClass {}
   class FirstDerivedClass : BaseClass {}
   class SecondDerivedClass : FirstDerivedClass {}
   class ThirdDerivedClass : SecondDerivedClass {}
   class FourthDerivedClass : ThirdDerivedClass {}

   // This class violates the rule. 
   class FifthDerivedClass : FourthDerivedClass {}
}