2010-07-29 6 views
3

J'utilise C# et Caliburn.Caliburn - Gestion des exceptions et sauvetage

Existe-t-il un moyen global d'intercepter toutes les exceptions dans tous les modèles de vue?

Qu'en est-il de l'existence d'une exception lors de l'importation depuis un conteneur DI/IoC?

Je veux fondamentalement afficher une boîte de message quand ceci se produit. Le RescueAttribute me semble comme il devrait être mis sur chaque classe de modèle de vue unique, et il ne semble pas que cela fonctionne lorsque vous utilisez AsyncActionAttribute en même temps.

+0

Dans le même temps, je me suis fait un ensemble de classes de base avec une méthode de sauvetage virtuel pour gérer cela. Un autre moyen? – jonathanpeppers

Répondre

2

La méthode IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod) est appelée juste après la création d'une action et peut y ajouter des filtres.

Vous pouvez fournir un IConventionManager personnalisé en remplaçant DefaultConventionManager.ApplyActionCreationConventions et en poussant l'action d'un filtre de secours. Notez que dans ce cas, vous devez quand même fournir une méthode de secours sur chaque ViewModel; Pour surmonter cela, vous pouvez créer un nouveau filtre de secours personnalisé (en suivant la ligne de l'original) et envoyer l'exception à votre infrastructure.

+0

Je vais regarder dans cela. – jonathanpeppers