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