私はWinFormsベースのIDEスタイルのアプリケーションを書いています。そのアプリケーションの一部として、と呼ばれるインターフェースを実装するプラグインをロードしますIFeature
。機能はMEFを介してメインIDEフレームワークによってロードされ、のインスタンスをインスタンス化するように求められます。インスタンスはControl
タブページに追加され、プラグインのメインの作業面を形成します。ここまでは順調ですね。
私は現在、不適切に実装されたプラグインからIDEを保護しようと取り組んでいますが、それを正確に行う方法については良いアイデアがありません。たとえば、プラグインが例外をスローするボタンである場合、IDEフレームワークコードはその呼び出しスタックにまったく関与していないため、try-catchを挿入する場所がありません。その方法でスローされた例外に対するトップレベルの保護を提供するイベントAppDomain.CurrentDomain.UnhandledException
とイベントにフックしましたが、例外が原因となったインスタンスに関連付けられるように、何らかのコンテキストでそれらをキャッチできることを望んでいました。問題。Application.ThreadException
IFeature
私は、派生したクラスを作成し、Control
あらゆる種類のメソッドをオーバーライドして、try-catchを実装するというアイデアを持っていましたが、それは
a。不器用なようです。
b。メソッドをオーバーライドするコントロールから保護しません。
c。非カスタムコントロールが使用されるのを防ぎます(たとえば、Panel
)
フレームワークに原因に近い保護を提供するために使用できる他の方法はありますか、それとも上記のように非常に広い範囲のイベントの処理に固執していますか?
ありがとう
マット