2011-03-18 1 views
0

Boo의 Reactive Extensions를 사용하려고하는데 타입 문제가 있습니다.Observable에 타입 문제가 있습니다. 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을 제공 : 다음은 기본 예제가 대상 유형에 소스 유형에서 캐스팅 할 수 없습니다. 이 문제는 내가 관찰 대상을 만드는 방법과 관련이있는 것으로 보이지만 유형 문제가 발생하는 곳을보기 위해 고심했습니다.

아이디어가 있으십니까?

답변

3

Observable.CreateFunc<IObserver,Action>이지만, OnSubscribeIObservable을 허용합니다.

이 시도 :

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

관련 문제