Bagikan melalui


CA1052: Jenis pemegang statis harus Statis atau NotInheritable

Properti Nilai
ID Aturan CA1052
Judul Jenis pemegang statis harus Statis atau Tidak Dapat Diwariskan
Golongan Desain
Perbaikan bersifat disruptif atau non-disruptif Merusak
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Jenis non-abstrak hanya berisi anggota statis (selain kemungkinan konstruktor default) dan tidak dideklarasikan dengan pengubah statis atau Bersama .

Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.

Deskripsi aturan

Aturan CA1052 mengasumsikan bahwa jenis yang hanya berisi anggota statis tidak dirancang untuk diwariskan, karena jenisnya tidak menyediakan fungsionalitas apa pun yang dapat ditimpa dalam jenis turunan. Jenis yang tidak dimaksudkan untuk diwariskan harus ditandai dengan static pengubah di C# untuk melarang penggunaannya sebagai jenis dasar. Selain itu, konstruktor defaultnya harus dihapus. Di Visual Basic, kelas harus dikonversi ke modul.

Aturan ini tidak diaktifkan untuk kelas abstrak atau kelas yang memiliki kelas dasar. Namun, aturan ini diaktifkan untuk kelas yang mendukung antarmuka kosong.

Catatan

Dalam implementasi penganalisis terbaru dari aturan ini, aturan ini juga mencakup fungsionalitas aturan CA1053.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, tandai jenis sebagai static dan hapus konstruktor default (C#), atau konversikan ke modul (Visual Basic).

Kapan harus menekan peringatan

Anda dapat menekan pelanggaran dalam kasus berikut:

  • Jenis ini dirancang untuk diwariskan. Tidak adanya pengubah static menunjukkan bahwa jenisnya berguna sebagai jenis dasar.
  • Jenis digunakan sebagai argumen jenis. Jenis statis tidak dapat digunakan sebagai argumen jenis.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Mengonfigurasi kode yang akan dianalisis

Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.

Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Desain) yang berlaku untuk aturan ini. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.

Menyertakan permukaan API tertentu

Anda dapat mengonfigurasi bagian mana dari basis kode yang akan menjalankan aturan ini, berdasarkan aksesibilitasnya. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Contoh pelanggaran

Contoh berikut menunjukkan jenis yang melanggar aturan:

public class StaticMembers
{
    public static int SomeProperty { get; set; }
    public static void SomeMethod() { }
}
Imports System

Namespace ca1052

    Public Class StaticMembers

        Shared Property SomeProperty As Integer

        Private Sub New()
        End Sub

        Shared Sub SomeMethod()
        End Sub

    End Class

End Namespace

Perbaiki dengan pengubah statis

Contoh berikut menunjukkan cara memperbaiki pelanggaran aturan ini dengan menandai jenis dengan pengubah static di C#:

public static class StaticMembers
{
    public static int SomeProperty { get; set; }
    public static void SomeMethod() { }
}