0

我正在尝试使用 Boo 的 Reactive Extensions 并遇到类型问题。这是基本示例:

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: 无法从源类型转换为目标类型。问题似乎与我如何创建可观察对象有关,但我一直在努力寻找类型问题的来源。

想法?

4

1 回答 1

3

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)
于 2011-03-18T07:14:16.703 回答