다음을 통해 공유


CA1058: 형식은 특정 기본 형식을 확장하면 안 됩니다.

속성
규칙 ID CA1058
타이틀 형식은 특정 기본 형식을 확장하면 안 됩니다.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

형식은 다음 기본 형식 중 하나를 확장합니다.

기본적으로 이 규칙은 외부에 표시되는 형식만 확인하지만 이는 구성 가능합니다.

규칙 설명

예외는 System 네임스페이스의 서브클래스 중 하나 또는 System.Exception에서 파생되어야 합니다.

기본 개체 모델이나 데이터 소스의 XML 보기를 나타내는 형식을 만들려면 XmlDocument 서브클래스를 만들지 마세요.

제네릭이 아닌 컬렉션

가능하면 언제든지 및/또는 확장 제네릭 컬렉션을 사용하세요. 이전에 제공하지 않았다면 코드에서 제네릭이 아닌 컬렉션을 확장하지 마세요.

잘못된 사용법의 예

public class MyCollection : CollectionBase
{
}

public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}

올바른 사용법의 예

public class MyCollection : Collection<T>
{
}

public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}

위반 문제를 해결하는 방법

해당 규칙 위반 문제를 해결하려면 다른 기본 형식 또는 제네릭 컬렉션에서 형식을 파생시킵니다.

경고를 표시하지 않는 경우

ApplicationException 위반에 대해 해당 규칙에서 경고를 표시하지 마세요. XmlDocument 위반에 대해 해당 규칙에서 경고를 표시하지 않는 것이 안전합니다. 코드가 이전에 릴리스된 경우 제네릭이 아닌 컬렉션에 대한 경고를 표시하지 않는 것이 안전합니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1058
// The code that's violating the rule is on this line.
#pragma warning restore CA1058

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1058.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

분석할 코드 구성

다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.

이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주(디자인)의 모든 규칙에 대해 이 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.

특정 API 화면 포함

접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.api_surface = private, internal