我有一个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);
我的问题是:
-
如果我订阅了“ThrownExceptions”,为什么方法A会抛出错误?注意`控制台。WriteLine(err.ToString())`永远不会被击中。
-
知道方法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
-
未正确使用ReactiveUI
-
打电话给联合国办事处。抛出异常的客户端方法,并得出错误结论,认为这是一个ReactiveUI问题,而事实并非如此。
感谢那些花时间帮助我的人。