Aracılığıyla paylaş


CA1040: Boş arabirimlerden kaçının

Özellik Değer
Kural Kimliği CA1040
Başlık Boş arabirimlerden kaçının
Kategori Tasarım
Hataya neden olan veya bozulmayan düzeltme Yeni
.NET 8'de varsayılan olarak etkin Hayır

Neden

Arabirim herhangi bir üye bildirmez veya iki veya daha fazla başka arabirim uygulamaz.

Varsayılan olarak, bu kural yalnızca dışarıdan görünen arabirimlere bakar, ancak bu yapılandırılabilir.

Kural açıklaması

Arayüzler bir davranış veya kullanım sözleşmesi sağlayan üyeleri tanımlar. Arabirim tarafından tanımlanan fonksiyonellik herhangi bir tür tarafından türün kalıtım hiyerarşisinde nerede belirdiği önemsenmeksizin devralınabilir. Tür arabirimin üyeleri için uygulamaları sağlayarak bir arayüz uygular. Boş bir arabirim herhangi bir üye tanımlamaz. Bu nedenle, uygulanabilecek bir sözleşme tanımlamaz.

Tasarımınızda türlerin uygulaması beklenen boş arabirimler varsa, büyük olasılıkla işaretçi olarak bir arabirim veya bir tür grubunu tanımlamanın bir yolunu kullanıyorsunuzdur. Bu tanımlama çalışma zamanında gerçekleşecekse, bunu gerçekleştirmenin doğru yolu özel bir öznitelik kullanmaktır. Hedef türleri tanımlamak için özniteliğin varlığını veya yokluğunu ya da özniteliğin özelliklerini kullanın. Tanımlamanın derleme zamanında gerçekleşmesi gerekiyorsa, boş bir arabirim kullanmak kabul edilebilir.

İhlalleri düzeltme

Arabirimi kaldırın veya arabirimine üye ekleyin. Boş arabirim bir tür kümesini etiketlemek için kullanılıyorsa arabirimini özel bir öznitelikle değiştirin.

Uyarıların ne zaman bastırılması gerekiyor?

Derleme zamanında bir tür kümesini tanımlamak için arabirim kullanıldığında bu kuraldan gelen bir uyarıyı engellemek güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

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

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Çözümlemek için kod yapılandırma

Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.

Bu seçeneği yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Tasarım) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.

Belirli API yüzeylerini ekleme

Bu kuralın üzerinde çalıştırılacak kod tabanınızın hangi bölümlerini erişilebilirliklerine göre yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Örnek

Aşağıdaki örnekte boş bir arabirim gösterilmektedir.

// Violates rule
public interface IBadInterface
{
}
' Violates rule
Public Interface IBadInterface
End Interface