使用2个int参数订阅Delegate

时间:2017-10-10 10:03:16

标签: .net uwp observable system.reactive reactive-programming

我正在为Windows 10 UWP项目使用Rx-Main(可观察库)。我有一个名为的第三个库的事件:

Observable.FromEvent<OnNumberChangedEventHandler>(x =>  x => _calculator.OnNumberChanged += x, x => _calculator.OnNumberChanged -= x)

我一直在尝试猜测如何使用

进行子语言
React-Native

但我没有办法解决它。我知道如何为EventHandlers或带有1个参数的EventDelegates做这件事,但在这种情况下它有2个int参数。关于如何做的任何想法?

感谢。

2 个答案:

答案 0 :(得分:2)

我非常讨厌这种语法:

var o = Observable.FromEvent<OnNumberChangedEventHandler, Tuple<int, int>>(
    a => (i1, i2) => a(Tuple.Create(i1, i2)), 
    h => _calculator.OnNumberChanged += h,
    h => _calculator.OnNumberChanged -= h
); //o is type IObservable<Tuple<int, int>>

基本上,Rx需要知道如何挂钩/取消挂起委托:这是最后两个参数。第一个参数是从自定义委托转换为Action<Tuple<int, int>>。然后该操作用于OnNext的可观察对象。

如果您愿意,可以将Tuple<int, int>类型替换为其他内容。

答案 1 :(得分:1)

试试这样:

Observable.FromEvent<OnNumberChangedEventHandler, (int, int)>(
    x => _calculator.OnNumberChanged += x,
    x => _calculator.OnNumberChanged -= x);