Jeson Martajaya
Jeson Martajaya

Reputation: 7352

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> ? Something like

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

Edit

Answer from Gluck works. I need to change the FromEventPattern to FromEvent.

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

Upvotes: 2

Views: 437

Answers (1)

Gluck
Gluck

Reputation: 2962

There's no such thing as a generic type 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.

But you can still use FromEvent:

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

Upvotes: 2

Related Questions