gpt4 book ai didi

c# - 如何将 Rx Observable 与通用 EventHandler 一起使用?

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:11 29 4
gpt4 key购买 nike

下面的代码有效

var mouseTracker = Observable.FromEventPattern<MouseEventArgs>(form1, "MouseMove");
//for Form1_MouseMove(object sender, MouseEventArgs e)

但是如何让 Observable.FromEventPattern 接受 EventHandler 呢?有点像

var mouseTracker = Observable.FromEventPattern<EventHandler<StockQuote>>(_board, "QuoteUpdated");
//for board_QuoteUpdated(object sender, StockQuote stockQuote)

编辑

Gluck 的回答有效。我需要将 FromEventPattern 更改为 FromEvent。

var quoteObserver = Observable.FromEvent<EventHandler<StockQuote>, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);

最佳答案

没有通用类型这样的东西 EventArgs<T> .

假设您需要为不遵循标准事件模式的事件创建一个可观察对象(在您的情况下这意味着 StockQuote 类型不扩展 EventArgs ),那么 FromEventPattern无法使用。

但您仍然可以使用 FromEvent :

IObservable<StockQuote> obs = Observable.FromEvent<QuoteUpdatedDelegate, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);

关于c# - 如何将 Rx Observable 与通用 EventHandler<T> 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33040677/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com