代码之家  ›  专栏  ›  技术社区  ›  François

ReactiveUI-当同一可观察对象的TopProperty处于良好状态时,ReactiveCommand失败

  •  0
  • François  · 技术社区  · 8 年前

    我有一个ReactiveCommand,它抛出以下错误。

    实现IHandleObservableErrors的对象(通常是 ReactiveCommand或ObservablesPropertyHelper)已出错,因此 打破了可观察的管道。为防止出现这种情况,请确保管道 不会出错,或订阅的ThrownExceptions属性 反对处理错误案件。

    以下是代码(方法A):

    private List<Dto> _items;
    public List<Dto> Items
    {
        get => _items;
        set => this.RaiseAndSetIfChanged(ref _items, value);
    }
    RefreshCommand = ReactiveCommand.CreateFromObservable(() => GetItems
                        .Do(dtos => Items = dtos)
                        .Select(_ => Unit.Default))
                    .DisposeWith(Disposables);
    RefreshCommand.ThrownExceptions.Subscribe(err => Console.WriteLine(err.ToString()));
    RefreshCommand.ExecuteIfPossible();
    

    我还尝试了其他方法(方法B):

    private readonly ObservableAsPropertyHelper<List<Dto>> _items;
    public List<Dto> Items => _items.Value;
    this._items = GetItems.ToProperty(this, x => x.Items);
    

    我的问题是:

    1. 如果我订阅了“ThrownExceptions”,为什么方法A会抛出错误?注意`控制台。WriteLine(err.ToString())`永远不会被击中。
    2. 知道方法A失败了,为什么方法B工作良好?

    我正在使用 Uno.ReactiveUI 这是reactiveUI版本8.0.0的一个分支

    非常感谢。

    使现代化

    如果我不加评论 ExecuteIfPossible RefreshCommand 是绑定的,则我没有运行时错误。 当我离开的时候 可执行的 ,则内部异常为

    无法加载文件或程序集“Uno”。地基 版本=255.255.255.255,区域性=中性,PublicKeyToken=空'。这个 系统找不到指定的文件。

    我甚至不知道是什么 可执行的 Execute(null) 但intellisense不允许我(这也不会编译)。因此,这肯定与Uno实现ReactiveUI有关。

    为了 Execute 为了有空,我必须 刷新命令 类型 ReactiveCommand<Unit, Unit> .然后我就可以写下面的内容了,一切都按预期进行了。

    RefreshCommand.Execute(Unit.Default).Subscribe().DisposeWith(Disposables);
    

    更新3

    1. 未正确使用ReactiveUI
    2. 打电话给联合国办事处。抛出异常的客户端方法,并得出错误结论,认为这是一个ReactiveUI问题,而事实并非如此。

    感谢那些花时间帮助我的人。

    0 回复  |  直到 6 年前
    推荐文章