ReactiveUI - 当ToProperty在同一个Observable上运行正常时,ReactiveCommand失败

时间:2018-06-15 15:13:46

标签: reactiveui reactive

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

  

实现IHandleObservableErrors的对象(通常是一个   因此,ReactiveCommand或ObservableAsPropertyHelper)存在错误   打破其可观察的管道。为防止这种情况,请确保管道   没有错误,或者订阅了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会抛出错误?请注意,`Console.WriteLine(err.ToString())`永远不会被命中。
  2. 为什么方法B工作正常,知道方法A失败了?
  3. 我正在使用Uno.ReactiveUI,它是reactiveUI版本8.0.0的分支

    谢谢。

    更新

    如果我注释掉ExecuteIfPossible并点击RefreshCommand绑定的按钮,那么我没有运行时错误。 当我离开ExecuteIfPossible时,内部异常是

      

    无法加载文件或程序集'Uno.Foundation,   Version = 255.255.255.255,Culture = neutral,PublicKeyToken = null'。该   系统找不到指定的文件。

    我甚至不知道ExecuteIfPossible是诚实的。我只想打电话给Execute(null),但智能感知不会让我(也不会编译)。所以这肯定与ReactiveUI的Uno implmentation有关。

    UPDATE2

    为了Execute可用,我必须制作RefreshCommandReactiveCommand<Unit, Unit>。然后我可以编写以下内容,一切都按预期工作。

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

    UPDATE3

    问题毫无意义,应该“关闭”,因为问题与其标题或描述无关。这只是我:

    1. 未正确使用ReactiveUI
    2. 调用Uno.Client方法,该方法抛出一个异常,并且当它不是时,它会认为它是一个ReactiveUI问题。

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

0 个答案:

没有答案