我正在使用C#和Caliburn。
是否有全局方法可以捕获所有视图模型中的所有异常?
从DI / IoC容器导入过程中出现某种异常时该怎么办?
发生这种情况时,我基本上想要显示一个消息框。
RescueAttribute看起来像是必须放在每个单独的视图模型类上,并且当你同时使用AsyncActionAttribute时它似乎不起作用。
答案 0 :(得分:2)
方法IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod)
在创建操作后立即调用,并可以向其添加过滤器。
您可以提供自定义IConventionManager
覆盖DefaultConventionManager.ApplyActionCreationConventions
并将操作推送到救援过滤器。
请注意,在这种情况下,您必须在每个ViewModel上提供一个救援方法;为了解决这个问题,您可以构建一个新的自定义救援过滤器(遵循原始过滤器的行)并将异常分派给您的基础架构。
答案 1 :(得分:0)
有一种非常简单的方法可以实现这一点,只需覆盖Bootstrapper中的UnhandledException方法。
这里有一个例子:Global handling exception in WPF app with Caliburn.Micro