CA1040: Boş arabirimlerden kaçının
TürAdı |
AvoidEmptyInterfaces |
CheckId |
CA1040 |
Kategori |
Microsoft.Design |
Bozan Değişiklik |
Bozan |
Sebep
Arabirim/arayüz herhangi bir üye bildirmez veya iki ya da daha fazla arabirim uygulamaz.
Kural Tanımı
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 devralınabilir, türün kalıtım hiyerarşisinde nerede belirdiği önemsenmeksizin.Bir tür arabirimin üyeleri için uygulama sağlayarak bir arabirim uygulamalar.Boş bir arabirim herhangi bir üye tanımlamaz.Bu nedenle, uygulanabilir bir sözleşme tanımlamaz.
Eğer tasarımınızda uygulama bekleyen türlerden olan boş arabirimler içeriyorsa, muhtemelen bir işaretçi veya bir grup türleri tanımlamak için bir yol olarak bir arabirim kullanıyorsunuzdur.Eğer bu kimlikleme çalışma zamanında ortaya çıkacaksa, bunu doğru şekilde tamamlamanın yolu özel bir öznitelik kullanmaktır.Hedef türü tanımlamak için özniteliğin varlığını ya da yokluğunu veya özniteliğin özelliklerini kullanın.Eğer kimliklemenin derleme zamanında gerçekleşmesi gerekiyorsa boş bir arayüz kullanımı kabul edilebilir.
İhlallerin Düzeltilmesi
Arabirimi kaldırın veya ona üye ekleyin.Boş arabirim bir tür kümesini etiketlemek için kullanılıyorsa, arabirimi özel bir öznitelik ile değiştirin.
Uyarılar Ne Zaman Bastırılmalı
Derleme zamanında arabirim bir tür kümesini tanımlamak için kullanıldığında, bu kuraldan bir uyarıyı gizlemek güvenlidir.
Örnek
Aşağıdaki örnek, boş bir arabirim gösterir.
Imports System
Namespace Samples
Public Interface IBadInterface ' Violates rule
End Interface
End Namespace
using System;
namespace DesignLibrary
{
public interface IBadInterface // Violates rule
{
}
}
#include "stdafx.h"
using namespace System;
namespace Samples
{
// Violates this rule
public interface class IEmptyInterface
{
};
}