Проблема типа с Observable.Create from 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)

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

Идеи?


person Tristan    schedule 18.03.2011    source источник


Ответы (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)
person Richard Szalay    schedule 18.03.2011
comment
Отлично, просто нужно использовать callable(), а не callable. - person Tristan; 18.03.2011