2013-03-11 8 views
5

に文句を言う私は、イベントコード分析ルールCA1040:空のインターフェイスを避けるには、非空のインターフェイス

interface IMyInterface 
{ 
event SomeHandler MyEvent1; 
event SomeHandler MyEvent2; 
... 
} 

を宣言するインタフェースを持っていますが、私はコード解析ルールCA1040を有効にすると:それは文句を言い、空のインターフェイスを、避けてください私のインターフェイスは、このルール、それを解決するための任意のアイデアに違反している?

+5

警告を抑制するだけですか?それははっきりと偽りです。 –

+0

私は本当の理由があるときにのみ抑制することを好みます。この場合、ルールが正しく機能しないという理由があります。 –

+0

インターフェイスが空であると見なすと奇妙です。 'event'宣言は実装クラス/構造体が' add'と 'remove'アクセサの両方を含むその型(' SomeHandler')で 'event'を持たなければならないという要件です。実装者が "フィールドライクなイベント"を使用することを選択した場合、2つのアクセサは "暗黙的"になる可能性があります。インデクサだけで動作しますか?つまり、 'IMyInterface'の唯一のメンバが' string [int idx] {get; } '? –

答えて

2

それは文句を言う理由は、次のとおりです。Visual Studioは、この属性を追加する便利なメニューを提供します。 特定の方法でイベント宣言を実装することはできません。

Matthewが示唆しているように、それを抑制してください。

#define CODE_ANALYSIS 

またはこれを無視してください。

編集

インターフェースを継承する任意のクラスは、それを「実現」するために再クエリInfactはあるように、それは、後にすべてのバグかもしれない - それゆえ:それはない空のインターフェースです。

+2

あなたは「このインターフェースは何の示唆も必要ない」と言っていますが、 'class Foo:IMyInterface {}'はコンパイルに失敗します。 – AakashM

+0

tuche - それがあります。これらのイベントの実装は1つしかないため、多少の賛成です。私の答えを編集する。 –

+0

イベントの実装は1つだけではなく、 'event SomeHandler MyEvent1;'、 'event SomeHandler Event1 {add {...}} {}}'となります。 –

関連する問題