MvvmCross 8.0.1版本MvxAttributeViewPresenter.Show方法变动咨询
MvvmCross 8.0.1 版本
Show 方法改动原因说明 本次改动的核心目的是提升运行时稳定性,避免无意义的空引用崩溃,具体原因如下:
- 6.4.2 版本的实现未做任何空值防御:如果
GetPresentationAttributeAction返回的结果中ShowAction为空,或者匹配到的MvxBasePresentationAttribute实例为空导致attribute.ViewType为空,直接调用Invoke会立刻抛出NullReferenceException,且这类崩溃通常没有明确的业务上下文,排查难度极高。 - 8.0.1 版本新增的非空判断覆盖了所有异常分支:当没有匹配到对应的页面展示逻辑、或者未找到目标ViewModel绑定的视图类型时,方法会直接返回
false而非抛出崩溃,上层调用者可以根据返回值做兜底处理,比如弹出用户友好的报错提示,大幅提升应用容错性。 - 适配特殊注册场景:部分动态注册的ViewModel可能未绑定对应的视图特性,或者自定义展示逻辑存在加载时序问题,新增的判断可以优雅拦截这类异常场景,不会直接导致应用退出。
如果你需要还原6.4.2版本的实现,建议自行补充空值校验或异常捕获逻辑,避免异常场景下出现不必要的崩溃。
内容的提问来源于stack exchange,提问作者ivie
相关产品推荐
相关产品推荐

