Caliburn - обработка исключений и спасение - PullRequest
3 голосов
/ 30 июля 2010

Я использую C # и Caliburn.

Существует ли глобальный способ перехвата всех исключений во всех моделях представлений?

Как насчет случаев, когда при импорте изКонтейнер DI / IoC?

Я хочу показать окно сообщения, когда это происходит.

RescueAttribute выглядит для меня так, как будто он должен быть помещен в каждый класс модели представления, и не похоже, что он работает при одновременном использовании AsyncActionAttribute.

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Метод IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod) вызывается сразу после создания действия и может добавлять к нему фильтры.

Вы можете предоставить пользовательский IConventionManager переопределяющий DefaultConventionManager.ApplyActionCreationConventions и добавив в действие фильтр восстановления.

Обратите внимание, что в этом случае вы все равно должны предоставить метод восстановления для каждой модели ViewModel;Чтобы преодолеть это, вы можете создать новый пользовательский фильтр восстановления (следуя линии исходного) и отправить исключение в свою инфраструктуру.

0 голосов
/ 27 октября 2011

Есть действительно простой способ добиться этого, просто переопределите метод UnhandledException в вашем Bootstrapper.

Здесь есть пример: Исключение глобальной обработки в приложении WPF с Caliburn.Micro

...