.net - 使用 2 个 int 参数订阅 Delegate

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

我正在为 Windows 10 UWP 项目使用 Rx-Main(可观察库)。我为第三个图书馆举办了一个事件,名为:

OnNumberChangedEventHandler

public delegate void OnNumberChangedEventHandler(int newNumber, int oldNumber);

我一直在猜测如何使用

进行订阅
Observable.FromEvent<OnNumberChangedEventHandler>(x =>  x => _calculator.OnNumberChanged += x, x => _calculator.OnNumberChanged -= x)

但我不知道如何 Hook 它。我知道如何为 EventHandlers 或带有 1 个参数的 EventDelegates 执行此操作,但在这种情况下它有 2 个 int 参数。关于如何做到这一点有什么想法吗?

谢谢。

最佳答案

我非常讨厌这种语法:

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 需要知道如何 Hook /取消 Hook 委托(delegate):这是最后两个参数。第一个参数是从自定义委托(delegate)到 Action<Tuple<int, int>> 的转换.然后将该操作用于 OnNext 可观察对象。

你可以换出 Tuple<int, int>如果您愿意,可以输入其他内容。

关于.net - 使用 2 个 int 参数订阅 Delegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46663972/

相关文章:

Angular 2发送http请求之前的延迟

ionic2 - Ionic 2 Provider 可观察取消订阅

c# - 如何将 .h 文件 +dll 变成某种 .Net 包装器?

c# - 不同日期列表

c++ - 适用于 Windows (UWP) 而不是 iOS 的通用运行时组件 #ifdef 是什么?

uwp - C#从UWP上连接的wifi适配器获取IP地址

Angular 4 可观察捕获服务未定义

.net - 从 .net 中的 xsd 架构文件中提取枚举值

c# - 多线程集合锁类型

build - 如何在升级 Windows 10 版本后通过 3 个步骤修复 Windows 10 appx (uwp)