我正在为 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/