2017-10-27 25 views
-2

私はイベント(抽象的な)を持つ抽象クラスを持っています。私は実際に私の実装でこのイベントは必要ありません。私の実装でそれを使用しないときは、私は持っていてはいけないことをよく警告してくれます。 [未使用]や[無視]のようなC#の事前定義アノテーションはありますか?抽象クラスの未使用変数の実装の警告を防ぐ方法

public abstract class Abc 
{ 
... 
public abstract event EventHandler<MsgEventHandler> 
} 

public MyClass: Abc 
{ 
    public override event EventHandler<MsgEventHandler> MesReceived; 


//constructers 
//methodes 
//etc 

} 
+4

は 'パブリック抽象イベントのEventHandler 'あなたのためにコンパイルしていますか? – mjwills

+0

コードが無効です。なぜイベントは抽象的なものなのでしょうか?意味がない。 – john

+3

抽象クラスで抽象クラスを抽象クラスにする必要はありません。推奨されるパターンは、単純にイベントを基本クラスに実装し、実際にイベントを呼び出すための 'protected virtual'メソッドを提供することです。これを無効にすることはオプションです。イベントハンドラの実装自体を行う必要があるクラスはほとんどありません。 –

答えて

2

抽象イベントハンドラの宣言の前

#pragma warning disable 0067 

を追加します。それを復元することを忘れないでください。 これはおそらくあなたのために働く必要があります。

public class MyClass: Abc 
{ 
#pragma warning disable 0067 
    public override event EventHandler<EventArgs> MesReceived; 
#pragma warning restore 0067 
} 
+0

これはベースではなく、子クラスです。あなたはまた、警告を「復元する」ことを忘れました。 –

+0

@Camilo:そうです。私はそれを修正しました。 – Sjips

1

abstractキーワードの全体のポイントは、あなたが派生クラスでそれを実装しなければならないということです。抽象プロパティは、それを継承して実装する必要があるインターフェイスメンバーとして考慮してください。あなたは、常にこのロジックを実装する必要があり、代わりに空の使用にvirtualキーワードをそれを残したくない場合は、次の

public abstract class Abc 
{ 
    public virtual event EventHandler<MsgEventHandler> MesReceived; 
} 

public MyClass: Abc 
{  
    // compiles without this line: 
    public override event EventHandler<MsgEventHandler> MesReceived; 
} 
関連する問題