Вопрос

Я пытаюсь использовать 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)

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

Идеи?

Это было полезно?

Решение

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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top