Тип проблемы с Observable.Create от Boo - PullRequest
0 голосов
/ 18 марта 2011

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

3 голосов
/ 18 марта 2011

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