【问题标题】:ReactiveUI-5.99.6: ReactiveCommand CanExecute always returns FalseReactiveUI-5.99.6:ReactiveCommand CanExecute 总是返回 False
【发布时间】:2018-09-07 12:56:26
【问题描述】:

我正在使用 ReactiveUI-5.99.6,但我无法通过这个简单的测试

public class ViewModel : ReactiveObject
{
    public ReactiveList<int> List { get; private set; }
    public IReactiveCommand Command { get; private set; }

    public ViewModel()
    {
        List = new ReactiveList<int>();
        Command = ReactiveCommand.Create(List.Changed.Select(_ => List.Any()));
    }
}

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        var vm = new ViewModel();

        vm.List.Add(2);
        Assert.IsTrue(vm.Command.CanExecute(null));
    }
}

谁能告诉我我做错了什么?

【问题讨论】:

  • 从来没有发布过 5.99.6,我们有一个 5.5.1,然后我们跳到了 6.0.0。我们目前在 8.7.2。您是否对版本号感到困惑?
  • 我正在尝试从 4.6.5 升级。我下载了这个版本github.com/reactiveui/ReactiveUI/tree/5.99.6

标签: wpf reactiveui


【解决方案1】:

我不知道版本 5.99.6 (!?) 但以下实现应该使您的单元测试在版本 8.7.2 中通过:

public class ViewModel : ReactiveObject
{
    public ReactiveList<int> List { get; private set; }
    public ICommand Command { get; private set; }

    public ViewModel()
    {
        List = new ReactiveList<int>();
        Command = ReactiveCommand.Create(() => { /* do something */ }, List.Changed.Select(_ => List.Any()));
    }
}

如果您将Command 属性的类型更改为ICommand 以外的任何其他类型(例如ReactiveCommand&lt;Unit, Unit&gt;),您的单元测试将如下所示:

[TestMethod]
public async Task TestMethod1()
{
    var vm = new ViewModel();
    vm.List.Add(2);
    Assert.IsTrue(await vm.Command.CanExecute.FirstAsync());
}

如果我的项目是 .Net 4.5,我应该得到什么版本?

ReactiveUI 7.4.0 支持 .NET Framework 4.5。上面的解决方案也应该适用于这个版本。

【讨论】:

  • 如果我的项目是.Net 4.5,我应该得到什么版本?版本 8 仅是 .Net 4.6 对吗?
  • @Dtex: 7.4.0 支持 .NET Framework 4.5。
  • 不,这个项目非常大,升级到 7.4.0 几乎破坏了每个课程。我开始怀疑升级对我们来说是否真的可行。
  • 该项目是使用 4.6.5 版本构建的,因为它从 .Net 4.0 开始。现在我们切换到 .Net 4.5,我试图看看我们是否可以更新 ReactiveUI,但是由于所有的重大变化,我不知道它是否真的值得付出努力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2021-11-05
  • 2018-11-05
相关资源
最近更新 更多