【问题标题】:How to use Rx Observable with generic EventHandler<T>?如何将 Rx Observable 与通用 EventHandler<T> 一起使用?
【发布时间】:2015-10-09 14:20:53
【问题描述】:

以下代码有效

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);

【问题讨论】:

    标签: c# system.reactive


    【解决方案1】:

    没有泛型类型 EventArgs&lt;T&gt; 这样的东西。

    假设您需要为不遵循标准事件模式的事件创建一个 observable(在您的情况下,这意味着 StockQuote 类型不扩展 EventArgs),然后是 FromEventPattern无法使用。

    但你仍然可以使用FromEvent:

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

    【讨论】:

    • 你是对的。我的意思是 EventHandler,而不是 EventArgs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多