C# 如何正确观察非标准事件?
我不熟悉反应式扩展,并且正在处理一个COM库,它的事件定义如下:C# 如何正确观察非标准事件?,c#,system.reactive,C#,System.reactive,我不熟悉反应式扩展,并且正在处理一个COM库,它的事件定义如下: public delegate void MyDelegate(int requestId, double price, int amount); public event MyDelegate MyEvent; Observable.FromEvent<MyDelegate, MyArgs>( converter => new MyDelegate( (id, pric
public delegate void MyDelegate(int requestId, double price, int amount);
public event MyDelegate MyEvent;
Observable.FromEvent<MyDelegate, MyArgs>(
converter => new MyDelegate(
(id, price, amount) => converter(new MyArgs {
RequestId = id,
Price = price,
Amount = amount
})
),
handler => MyEvent += handler,
handler => MyEvent -= handler);
我如何正确地观察这一点?我尝试使用Observable.FromEvent()
,但由于事件的参数不是EventArgs
类型,我看不出FromEvent()
或FromEventPattern()
将如何工作
我目前的解决方法是将自定义委托附加到事件,然后调用Subject.OnNext()
,但我猜我不应该这样做
以下是我当前解决方案的一个示例:
MyEvent += new MyDelegate((int requestId, double price, int amount) =>
{
Task.Run(() =>
{
var args = new MyArgs()
{
requestId = requestId,
price = price,
amount = amount,
};
this.mySubject.OnNext(args);
});
});
它有一个特殊的重载
FromEvent
。这有点傻,但函数签名看起来像:
IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion,
Action<TDelegate> addHandler,
Action<TDelegate> removeHandler);
IObservable FromEvent(Func