[英]How to use Rx Observable with generic EventHandler<T>?
The following code works以下代码有效
var mouseTracker = Observable.FromEventPattern<MouseEventArgs>(form1, "MouseMove");
//for Form1_MouseMove(object sender, MouseEventArgs e)
But how to make the Observable.FromEventPattern to take EventHandler <T> ?但是如何让 Observable.FromEventPattern 接受 EventHandler <T> ? Something like
就像是
var mouseTracker = Observable.FromEventPattern<EventHandler<StockQuote>>(_board, "QuoteUpdated");
//for board_QuoteUpdated(object sender, StockQuote stockQuote)
Edit编辑
Answer from Gluck works.来自 Gluck 的回答有效。 I need to change the FromEventPattern to FromEvent.
我需要将 FromEventPattern 更改为 FromEvent。
var quoteObserver = Observable.FromEvent<EventHandler<StockQuote>, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);
There's no such thing as a generic type EventArgs<T>
.没有泛型类型
EventArgs<T>
这样的东西。
Assuming that what you need is to create an observable for an event which doesn't follow the standard event pattern (in your case it'd mean StockQuote
type doesn't extend EventArgs
), then FromEventPattern
can't be used.假设您需要为不遵循标准事件模式的事件创建一个 observable(在您的情况下,这意味着
StockQuote
类型不扩展EventArgs
),则不能使用FromEventPattern
。
But you can still use FromEvent
:但您仍然可以使用
FromEvent
:
IObservable<StockQuote> obs = Observable.FromEvent<QuoteUpdatedDelegate, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.