共用方式為


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