我正在尝试使用ReactiveUI 6(beta)设置一个简单的框架ViewModel并不断收到编译器错误(在Xamarin Studio,FWIW中)。
代码:
using System;
using System.Reactive;
using System.Reactive.Linq;
using ReactiveUI;
// ...
public IReactiveCommand TryAuthenticateCommand { get; protected set; }
// ...
this.TryAuthenticateCommand = ReactiveCommand.Create(
this.WhenAny(
x => x.Username,
x => x.Password,
(username, password) =>
!string.IsNullOrWhiteSpace(username.Value) &&
!string.IsNullOrWhiteSpace(password.Value)));
this.TryAuthenticateCommand.Subscribe(x => MessageBus.Current.SendMessage("Yes!"));
错误:
Error CS0411: The type arguments for method `System.ObservableExtensions.Subscribe<T>(this System.IObservable<T>, System.Action<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly (CS0411)
答案 0 :(得分:2)
这段代码很完美,我想你只是缺少一个使用语句,“使用System.Reactive”
更新:这不起作用的原因是代码不在代码段中。您将TryAuthenticateCommand
声明为IReactiveCommand
,但未实现IObservable<T>
(T
会是什么?)。
在这种情况下,由于您没有提供异步方法,因此ReactiveCommand会返回CommandParameter,它是object
。因此将其声明为ReactiveCommand<object>
,一切正常