2017-11-23 4 views
2

私はRXで新しいです、今私は簡単なことをやろうとしています - 新しい値をIObservableに設定するだけです(私の場合Tは倍です)。どうやってするの?コンソールへIObservable <double>の値を変更する方法は?

Subject<double> subject = new Subject<double>(); 
IObservable<double> observable = subject.AsObservable(); 
observable.Subscribe(x => Console.WriteLine(x)); 
subject.OnNext(42); 

この意志出力42:ここ

public IObservable<double> TEST 
    { 
     get { return _test.NeededValue; } 
     set { _test.NeededValue = value; } // I have add this, in order to change needed value 
    } 
    ... 
    myObj.TEST = 0.1; // error 'Cannot convert double to System.IObservable<double> 
+3

あなたは動作しないと記述できますか?エラーメッセージ(存在する場合)、不正確な値など – WhatsThePoint

+0

私はC#でこれほど多くのことをしていませんが、 'IObservable'はインターフェースのようですが、私はあなたがインターフェースをインスタンス化できるとは思いません。 – Vivick

答えて

2

はかなり値を生成するために、観察を取得する最も簡単な方法です。

私はあなたが何をすべきかを示すために、ラインIObservable<double> observable = subject.AsObservable();を含まれていますが、Subject<T>としても、あなたが実際にはこれを行うことができますIObservable<T>ありました:

Subject<double> subject = new Subject<double>(); 
subject.Subscribe(x => Console.WriteLine(x)); 
subject.OnNext(42); 

は今、これが過度に興味深いものではありません。

これは、いくつかのより多くのニーズにマッチかもしれません:

void Main() 
{ 
    var foo = new Foo(); 
    foo.Bars.Subscribe(x => Console.WriteLine(x)); 
    foo.OnBar(42); 
} 

public class Foo 
{ 
    public event EventHandler<double> Bar; 

    public void OnBar(double value) 
    { 
     this.Bar?.Invoke(this, value); 
    } 

    public IObservable<double> Bars 
    { 
     get 
     { 
      return 
       Observable 
        .FromEventPattern<EventHandler<double>, double>(
         h => this.Bar += h, 
         h => this.Bar -=h) 
        .Select(x => x.EventArgs); 
     } 
    } 
} 

をこのコードは、コンソールに42を出力します。

関連する問題