Xamarin Forms:Reactive Extensions (Rx) 是替代 MVVM 模式的框架吗?
Xamarin Forms: Is Reactive Extensions (Rx) a framework that replaces MVVM pattern?
我有一个关于 Xamarin 表单的问题。反应式扩展只是对现有 .net 库的扩展吗?是否所有 mvvm 框架(FreshMvvm、MvvmCross、MvvmLight)都支持它?还是新的mvvm框架?
我无法回答是否所有的 MVVM 框架都支持 Rx,但我可以肯定地说 Rx 不是 MVVM 的替代品,您当然不会将其称为 MVVM 框架。
Rx 是一个框架,用于组合被推送的值集合(就像事件一样)。它当然可以用在 MVVM 框架中,再一次,像事件一样可以使用。
下面是一个使用 Rx 消费事件的小例子:
void Main()
{
var foo = new Foo();
var bars = Observable.FromEventPattern<int>(h => foo.Bar += h, h => foo.Bar -= h);
var subsciption = bars.Subscribe(ep => Console.WriteLine(ep.EventArgs));
foo.OnBar(42);
}
public class Foo
{
public event EventHandler<int> Bar;
public void OnBar(int i)
{
this.Bar?.Invoke(this, i);
}
}
这会将 42
写入控制台。
但我可以这样做:
var query =
from b in bars
where b.EventArgs > 21
select b.EventArgs * 2;
var subsciption = query.Subscribe(i => Console.WriteLine(i));
foo.OnBar(42);
foo.OnBar(7);
foo.OnBar(20);
foo.OnBar(21);
foo.OnBar(22);
现在我有一个更复杂的查询,它只会将 84
&& 44
写入控制台。
这种东西可以用在 MVVM 框架中,使它们更强大。
并且充分利用 Rx 的 MVVM 框架的优秀示例是 http://reactiveui.net/。试试吧。
我有一个关于 Xamarin 表单的问题。反应式扩展只是对现有 .net 库的扩展吗?是否所有 mvvm 框架(FreshMvvm、MvvmCross、MvvmLight)都支持它?还是新的mvvm框架?
我无法回答是否所有的 MVVM 框架都支持 Rx,但我可以肯定地说 Rx 不是 MVVM 的替代品,您当然不会将其称为 MVVM 框架。
Rx 是一个框架,用于组合被推送的值集合(就像事件一样)。它当然可以用在 MVVM 框架中,再一次,像事件一样可以使用。
下面是一个使用 Rx 消费事件的小例子:
void Main()
{
var foo = new Foo();
var bars = Observable.FromEventPattern<int>(h => foo.Bar += h, h => foo.Bar -= h);
var subsciption = bars.Subscribe(ep => Console.WriteLine(ep.EventArgs));
foo.OnBar(42);
}
public class Foo
{
public event EventHandler<int> Bar;
public void OnBar(int i)
{
this.Bar?.Invoke(this, i);
}
}
这会将 42
写入控制台。
但我可以这样做:
var query =
from b in bars
where b.EventArgs > 21
select b.EventArgs * 2;
var subsciption = query.Subscribe(i => Console.WriteLine(i));
foo.OnBar(42);
foo.OnBar(7);
foo.OnBar(20);
foo.OnBar(21);
foo.OnBar(22);
现在我有一个更复杂的查询,它只会将 84
&& 44
写入控制台。
这种东西可以用在 MVVM 框架中,使它们更强大。
并且充分利用 Rx 的 MVVM 框架的优秀示例是 http://reactiveui.net/。试试吧。