CA1501: 継承を使用しすぎないでください

TypeName

AvoidExcessiveInheritance

CheckId

CA1501

カテゴリ

Microsoft.Maintainability

互換性に影響する変更点

あり

原因

型が、その継承階層内の 5 つ以上深いレベルにあります。

規則の説明

深いレベルで入れ子にされた型の確認、理解、および保守は困難です。 この規則は、分析を同じモジュール内の階層に限定します。

違反の修正方法

この規則違反を修正するには、継承階層内でより浅いレベルの基本型から型を派生させるか、中間の基本型をいくつか削除します。

警告を抑制する状況

この規則による警告を抑制しても安全です。 ただし、コードの管理が難しくなる場合があります。 基本型の参照可能範囲によっては、この規則違反の修正が互換性に影響を与える可能性があるので、注意してください。 たとえば、パブリックな基本型を削除することは、互換性に影響を与える変更点です。

使用例

この規則に違反する型を次の例に示します。

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