CA1058: 형식은 특정 기본 형식을 확장하면 안 됩니다.
TypeName |
TypesShouldNotExtendCertainBaseTypes |
CheckId |
CA1058 |
범주 |
Microsoft.Design |
변경 수준 |
주요 변경 |
원인
외부에서 볼 수 있는 형식이 특정 기본 형식을 확장합니다. 현재로서 이 규칙은 다음 형식에서 파생되는 형식을 보고합니다.
규칙 설명
.NET Framework 버전 1의 경우에는 ApplicationException에서 새 예외를 파생시킬 것을 권장했습니다. 이 권장 사항이 변경되어 새 예외는 System.Exception에서 파생되거나 System 네임스페이스에 있는 해당 클래스의 서브클래스 중 하나에서 파생되어야 합니다.
내부 개체 모델 또는 데이터 소스의 XML 뷰를 만들고자 하는 경우에는 XmlDocument의 서브클래스를 만들지 마십시오.
제네릭이 아닌 컬렉션
가능하면 제네릭 컬렉션을 사용하거나 확장하십시오. 제네릭이 아닌 코드는 이미 제공한 경우가 아니면 코드에서 확장하지 마십시오.
올바르지 않은 사용 예제
public class MyCollection : CollectionBase
{
}
public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}
올바른 사용 예제
public class MyCollection : Collection<T>
{
}
public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}
위반 문제를 해결하는 방법
이 규칙 위반 문제를 해결하려면 형식을 다른 기본 형식이나 제네릭 컬렉션에서 파생시킵니다.
경고를 표시하지 않는 경우
ApplicationException과 관련된 위반의 경우 이 규칙에 따른 경고를 표시해야 합니다. XmlDocument에 대한 위반의 경우 이 규칙에서 경고를 표시하지 않도록 설정해도 안전합니다. 코드가 이미 발표된 경우 제네릭이 아닌 컬렉션에 대한 경고를 표시하지 않도록 설정해도 안전합니다.