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 none
olarak 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