Тип проблемы с Observable.Create от Boo

Я пытаюсь использовать Reactive Extensions от Boo и сталкиваюсь с проблемами типа. Вот основной пример:

def OnSubscribe(observer as IObservable[of string]) as callable:
    print "subscribing"

    def Dispose():
        print "disposing"

    return Dispose

observable = System.Linq.Observable.Create[of string](OnSubscribe)
observer = System.Linq.Observer.Create[of string]({x as string | print x})
observable.Subscribe(observer)

Subscribe здесь дает System.InvalidCastException: Невозможно привести от исходного типа к целевому типу. Похоже, проблема заключается в том, как я создаю наблюдаемое, но я изо всех сил пытался понять, откуда возникает проблема типа.

Идеи?

1 ответ

Решение

Observable.Create принимает Func<IObserver,Action>, но твой OnSubscribe принимает IObservable,

Попробуй это:

def OnSubscribe(observer as IObserver[of string]) as callable():
    print "subscribing"

    observer.OnNext("first and only value")
    observer.OnCompleted()

    def Dispose():
        print "disposing"

    return Dispose

observable = System.Linq.Observable.Create[of string](OnSubscribe)
observer = System.Linq.Observer.Create[of string]({x as string | print x})
observable.Subscribe(observer)
Другие вопросы по тегам