2011-03-18 67 views
0

我試圖使用從噓無擴展和正在運行到類型的問題。下面是簡單的例子:類型問題Observable.Create從噓

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有關,但我一直在努力查看類型問題出現在哪裏。

想法?

回答

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) 
+0

完美,只需要使用調用(),而不是調用了。 – Tristan 2011-03-18 08:08:14