Ich bin auf der Suche nach einer IEnumerable Sammlung zu einem IObservable ohne Rx ToObservable() und ToEnumerable() -Methoden zu konvertieren.Wie konvertiert man IEnumerable in IObservable?
Antwort
Einfache Antwort - verwenden Sie ToObservable
. Dafür ist es da.
"Die Beantwortung der eigentlichen Frage" Antwort - können Sie mit Subjects
über Observable.Create
vermeiden:
void Main()
{
var src = Enumerable.Range(0, 10);
var observable = Observable.Create<int>(obs =>
{
foreach(var item in src)
{
obs.OnNext(item);
}
return Disposable.Create(()=>{});
});
using(observable.Subscribe(Console.WriteLine))
{
Console.ReadLine();
}
}
Ausgang:
0
1
2
3
4
5
6
7
8
9
Ist 'Disposable.Create (() => {});' anders als 'Disposable.Empty'? – interlude
@interlude Nicht wirklich, ich habe nur die Überladung verwendet, so könnte man bei Bedarf eine Aufräumlogik hinzufügen. – JerKimball
Wenn man eine IEnumerable
unbekannter Art hat, gibt es zwei Möglichkeiten, eine kann es in IObservable "umwandeln":
Kopieren Sie alle Daten im Objekt in eine neue Sammlung, die
IObservable
implementiert. Wenn dies geschieht, werden nur Änderungen an der neuen Sammlung gemeldet. Änderungen am Original werden nicht vorgenommen.Erstellen Sie ein neues Objekt, das regelmäßig Momentaufnahmen des Inhalts der
IEnumerable
; Notieren Sie nach jedem Snapshot alle Änderungen, die an dem vorherigen Snapshot vorgenommen werden müssen, damit er mit dem neuen Snapshot übereinstimmt. Bei dieser Vorgehensweise werden am ursprünglichen Objekt vorgenommene Änderungen eventuell beobachtet, es ist jedoch schwierig, zeitnahe Aktualisierungsbenachrichtigungen bereitzustellen, ohne viel Zeit mit dem wiederholten Lesen der Sammlung zu verschwenden, wenn sich nichts geändert hat.
Es gibt einige Male, wenn man die IObservable
zum ursprünglichen IEnumerable
Objekt gebunden haben muss, anstatt auf ein neues Objekt, das mit einer Kopie der Daten vorgefüllt ist; In solchen Fällen kann der zweite Ansatz erforderlich sein. Häufig wird es jedoch nicht möglich sein, die Abfragerate schnell genug zu machen, um zeitnahe Aktualisierungen zu liefern, ohne dass dies zu einem inakzeptablen Systemladevorgang führt, es sei denn, die ursprüngliche Sammlung unterstützt Funktionen, die nicht in einem beliebigen Format verfügbar sind. Wenn man keine Anforderungen an den Typ IEnumerable
stellt, muss man wahrscheinlich Einschränkungen in den Threading-Kontexten machen, in denen er aktualisiert werden könnte.
- 1. Wie konvertiert man IEnumerable <int> zu einem Int32
- 2. Wie ein IEnumerable <Task<T>> zu IObservable <T>
- 3. Wie konvertiert man IEnumerable <char> in String [], also kann ich es mit String.Join verwenden?
- 4. Wie konvertiert man schön von einem IEnumerable <T> in eine Liste <T>?
- 5. IObservable mehrdeutiger Referenzfehler
- 6. konvertiert die Konvertierung von IQueryable in IEnumerable die Abfrage erneut?
- 7. Verarbeitet MailboxProcessor nur IObservable?
- 8. Konvertieren IEnumerable <Task<T>> zu IObservable <T>
- 9. wie man ein IEnumerable <IDisposable>
- 10. Wie konvertiert man altes SQL?
- 11. IEnumerable String
- 12. Wie konvertiert man das Datumsformat in vb.net?
- 13. Wie konvertiert man string [] in ArrayList?
- 14. Wie konvertiert man String in Bitset?
- 15. Android Wie konvertiert man Int in String?
- 16. Wie konvertiert man Methodenaufrufe in Postfix-Notation?
- 17. Wie konvertiert man DateTime in String?
- 18. Wie konvertiert man negative hexadezimale in dezimal
- 19. Wie konvertiert man Double.POSITIVE_INFINITY in BigDecimal?
- 20. Wie konvertiert man Byte-Array in Bilddatei?
- 21. Wie konvertiert man InputStream in Source?
- 22. Wie konvertiert man Platform :: String in char *?
- 23. Wie konvertiert man java.util.Date-Objekte in Kalenderobjekte?
- 24. Wie konvertiert man ein SparseArray in ArrayList?
- 25. Wie konvertiert man TryCast in C#?
- 26. Wie konvertiert man ein Datum in YYYYDDD?
- 27. Wie man Jobject in jstring konvertiert
- 28. Wie konvertiert man ein IplImage in Mat?
- 29. Wie man requests.cookiejar in qnetworkcookiejar konvertiert?
- 30. Wie konvertiert man PFGeoPoint in CLLocation
Warum möchten Sie nicht 'ToObservable()' verwenden? –
@DanielHilgarth Ich gebe zu, ich bin auch neugierig - das ist der Punkt von 'ToObservable()' – JerKimball