简体   繁体   English

如何将 Rx Observable 与通用 EventHandler 一起使用<T> ?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM