2009-09-03 12 views
18

ベースクラスのマウスイベントを処理する際の問題をトラブルシューティングしています。ブレークポイントはマウスイベントのトラブルシューティングではうまく機能しないので、デバッグ出力をイベントハンドラに追加したいと思います。しかし、基本クラスのイベント処理コードが多数の派生クラスによって共有され、特定のクラスのみが問題を呈しているため、実際の派生クラスの名前をデバッグ情報に含めることが重要です。C#内部ベースクラスから派生型の名前を取得

this.GetType().Nameを使ってみましたが、これは単にbaseクラスのタイプを返します。もちろん、クラスの修正を開始し、派生クラスtypeを基本クラスのコンストラクタに渡して保存できますが、これは明らかに一時的な必要性だけの変更です。基本クラス内から派生クラスの型を取得する簡単な方法はありますか?

答えて

31

this.GetType().Nameが有効です。派生クラスを持たないかもしれません。 。

8

this.GetType().Nameは常に、条件的にDebugger.Break()を使用して、現在の実行タイプではなく、それはで書かれたコードは、あなたががブレークポイントをエミュレートすることができますタイプの名前を返します。

if (this.GetType().Name == "Problematic type") 
    System.Diagnostics.Debugger.Break(); 
1

上げイベントでは、実際の送信者を送信者のプロパティに渡すようにしてください。リスニングクラスの送信側オブジェクトは、イベントを発生させた子クラスを正しく指す必要があります。

関連する問題