1

私はCaliburn(MVVMフレームワーク)をCastleWindsorおよびWCFファシリティと組み合わせて使用​​しています。

私のPresenterクラスにはコンストラクターの依存関係があり、これは実際にはWindsorコンテナーによって提供されるWCFコントラクトです。

エンドポイントが見つからない場合、明らかにプレゼンターを表示できない場合は、「このフォームを表示するために必要なネットワークサービスが見つかりません。しばらくしてからもう一度お試しください」というビューを表示したいと思います。 。

このコードを一元化するためにCastle/Caliburnにフックして、EndpointNotFoundExceptionが原因でプレゼンターがアプリケーションのどこで解決できなかった場合でも、同じエラービューが表示されるようにするための最良の方法は何でしょうか。

何か案は?

すべてのプレゼンターの解決策の周りに「try/catchendpoint-not-found」を配置する必要を避けたいのですが、WCFに依存するだけです...。

4

1 に答える 1

1

迅速な(しかし、私の意見では少し汚い)解決策は、すべての呼び出し元のプレゼンターをRescueフィルターで装飾することで、レスキューメソッドがその特定の例外をインターセプトできるようにすることです。共通の基本クラスがある場合(共通の祖先に適用する必要がある場合)、すべてのプレゼンターにフィルターを適用するのは比較的簡単です。そうでない場合は、フィルターを手動で適用するか、ルーティングされたメッセージングスタックをカスタマイズする必要があります(これは少しです)もっと強く)。

実際のサービスの代わりにプロキシを使用して、ある種の「遅延インスタンス化」を構築することもできます。このプロキシでは、try / catchハンドラーの下で実際のWCFサービスを解決し、内部解決が失敗した場合に有益なウィンドウを開くことができます。呼び出しコンテキストに関する手がかりがないため、このソリューションはあまり好きではありません。そのため、不適切な場合でもユーザーに情報を表示できます。

また、ネットワークの停止を処理するための洗練された方法を指摘したいと思います。これは、ネットワーク接続を必要とするプレゼンターを開くアクションの開始ポイントを自動的に無効にします。

于 2010-12-22T20:05:46.880 に答える