Этот код:
// NOTE: IQuote DOES NOT inherit from EventArgs
public interface IQuote// : EventArgs
{
}
class C
{
//NOTE, this is NOT public event EventHandler<IQuote> QuoteChangeEvent;
public delegate void QuoteChangeEvent(IQuote q);
}
var c = new C();
c.OnQuoteChange += ProcessQuoteChange;
public static void ProcessQuoteChange(IQuote q)
{
}
отлично работает.Теперь я хочу использовать Rx
.Это не работает, то есть даже не компилируется:
var priceChangedObservable = Observable.FromEvent<QuoteChangeEvent, QuoteChangeEvent>(
(handler) =>
{
QuoteChangeEvent quoteHandler = (e) => handler(e);
},
eh => c.OnQuoteChange += eh,
eh => c.OnQuoteChange -= eh
);
На линии (handler) =>
- "Severity Code Description Project File Line Suppression State
Error CS1643 Not all code paths return a value in lambda expression
of type 'Func<Action<QuoteChangeEvent>,
QuoteChangeEvent>' 294 Active"
На handler(e)
Ошибка CS1503 Аргумент 1: невозможно преобразовать из 'IQuote' в 'QuoteChangeEvent' 296 Активно
Как правильно создать IObservable
из delegate
?