共用方式為


CA1040:避免空的介面

型別名稱

AvoidEmptyInterfaces

CheckId

CA1040

分類

Microsoft.Design

中斷變更

中斷

原因

介面並未宣告任何成員或實作兩個以上的其他介面。

規則描述

介面是用來定義一組可提供行為或程式使用合約的成員。不論型別出現在繼承階層架構 (Inheritance Hierarchy) 中的何處,任何型別都可以採用介面所描述的功能。型別會實作介面,方法是提供介面成員的實作。空白介面不會定義任何成員。因此,也不會定義能夠實作的合約。

如果您的設計會包含預期要實作之型別的空介面,那麼或許是使用介面做為資料標記或識別型別群組的方式。如果此識別發生於執行階段,則完成這個工作的正確方式是使用自訂屬性 (Attribute)。利用屬性 (Attribute) 的出現與否,或屬性 (Attribute) 的屬性 (Property),辨識目標型別。如果此識別必須發生於編譯時期,則可以接受使用空的介面。

如何修正違規

移除介面或將成員加入至其中。如果空的介面用於標記一組型別,請以自訂屬性取代此介面。

隱藏警告的時機

當介面是用來在編譯時期辨識一組型別時,您可以放心地隱藏這項規則的警告。

範例

下列範例顯示空的介面。

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    
    {    
    };
}