2012-02-16 9 views
6

मेरे पास एक अवलोकन संग्रह है जिसमें मैं वस्तुओं को खिलाना चाहता हूं और किसी ने इसे सब्सक्राइब करने के बाद भी पर्यवेक्षकों तक पहुंचना चाहिए (जो कि एक अवलोकन का मुख्य उद्देश्य है)। मैं यह कैसे करुं?मैं IObservable <int> गतिशील रूप से/में आइटम कैसे अपडेट/जोड़ूं?

निम्नलिखित कार्यक्रम में, सदस्यता के बाद मैं 3 और संख्याओं में फ़ीड करना चाहता हूं जो पर्यवेक्षकों तक पहुंचें। मैं यह कैसे करु?

मैं उस मार्ग से नहीं जाना चाहता हूं जहां मैं IObservable<int> लागू करके अपनी खुद की अवलोकन योग्य कक्षा को लागू करता हूं और Publish विधि का उपयोग करता हूं? क्या यह हासिल करने का कोई और तरीका है?

public class Program 
{ 
    static void Main(string[] args) 
    { 
     var collection = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
     var observableCollection = collection.ToObservable(); 
     observableCollection.Subscribe(OnNext); 
     //now I want to add 100, 101, 102 which should reach my observers 
     //I know this wont' work 
     collection.Add(100); 
     collection.Add(101); 
     collection.Add(102); 
     Console.ReadLine(); 
    } 

    private static void OnNext(double i) 
    { 
     Console.WriteLine("OnNext - {0}", i); 
    } 
} 
+0

यदि आप आइटम हटाते हैं तो IObservable क्या करना चाहते हैं? –

उत्तर

5

यह मैं क्या कर होता है:

var subject = new Subject<double>(); 
    var collection = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    var observableCollection = collection 
     .ToObservable() 
     .Concat(subject); //at the end of the original collection, add the subject 
    observableCollection.Subscribe(OnNext); 

    //now I want to add 100, 101, 102 which should reach my observers 
    subject.OnNext(100); 
    subject.OnNext(101); 
    subject.OnNext(102); 

आम तौर पर, अगर आप देख सकते हैं कि जो कुछ भी अतिरिक्त इनपुट उत्पादन है, तो आप concat करना चाहते हैं कि नमूदार, बजाय लाजि़मी धक्का इन मूल्यों को एक विषय में, लेकिन कभी-कभी यह व्यावहारिक नहीं है।

+0

यह स्पष्ट नहीं था कि सदस्यता लें (ऑननेक्स्ट) और विषय .ऑनएक्स्ट (100) वास्तव में एक ही संदर्भ नहीं हैं। पूर्व में कोई आइटम आने के लिए कॉल करने का कोई तरीका है। उत्तरार्द्ध सब्सक्राइब किए गए पर्यवेक्षकों को सूचित करने के लिए एक आरएक्स विधि है, अनुक्रम में एक नया अवलोकन योग्य घटना आ गई है। – BraveNewMath

संबंधित मुद्दे