Szukam przekonwertować kolekcję IEnumerable na IObservable jeden bez używania metod Rx ToObservable() i ToEnumerable().jak przekonwertować IEnumerable do IObservable?
Odpowiedz
Prosta odpowiedź - użyj ToObservable
. Po to jest to.
"Odpowiadając na rzeczywiste pytanie" odpowiedź - można uniknąć stosując Subjects
poprzez Observable.Create
:
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();
}
}
wyjściowa:
0
1
2
3
4
5
6
7
8
9
Czy 'Disposable.Create (() => {});' różni się od 'Disposable.Empty'? – interlude
@interlude Nie bardzo, użyłem przeciążenia, więc można dodać logikę czyszczenia, jeśli jest to wymagane. – JerKimball
Jeśli ktoś ma IEnumerable
nieznanego typu, istnieją dwa sposoby, jeden może "przekonwertować go do IObservable":
Skopiuj wszystkie dane w obiekcie do nowej kolekcji, która implementuje
IObservable
. Jeśli tak się stanie, zostaną zgłoszone tylko zmiany wprowadzone do nowej kolekcji. Zmiany dokonane w oryginale nie będą.Utwórz nowy obiekt, który będzie okresowo robić migawki zawartości
IEnumerable
; po zrobieniu każdej migawki, zgłoś wszystkie zmiany, które musiałyby zostać wprowadzone w poprzedniej migawce, aby pasowała do nowej. Dzięki temu podejściu, zmiany wprowadzone do oryginalnego obiektu zostaną zauważone, ale trudno jest zapewnić terminowe powiadomienia o aktualizacjach, nie tracąc wiele czasu na wielokrotne odczytywanie kolekcji, gdy nic się nie zmieni.
Istnieje kilka razy, gdy trzeba mieć IObservable
związany z oryginalnym IEnumerable
obiektu, zamiast do nowego obiektu, który jest fabrycznie napełniony z kopią danych; w takich przypadkach może być konieczne zastosowanie drugiego podejścia. Często jednak nie będzie możliwe szybkie wprowadzenie szybkości odpytywania, aby zapewnić terminowe aktualizacje bez powodowania niedopuszczalnego ładowania systemu, chyba że oryginalna kolekcja obsługuje funkcje, które nie są dostępne w arbitralnym IEnumerable
. Ponadto, jeśli nie zostanie nałożony wymóg dotyczący typu modelu IEnumerable
, prawdopodobnie będzie konieczne wprowadzenie ograniczeń w kontekście wątków, w których może on zostać zaktualizowany.
- 1. Jak przekonwertować IEnumerable <Task<T>> do IObservable <T>
- 2. Jak przekonwertować IEnumerable <int> do Int32
- 3. Używanie IObservable zamiast zdarzeń
- 4. Konwertuj IEnumerable <Task<T>> do IObservable <T>
- 5. Jak przekonwertować imprezę do IObservable gdy nie jest ona zgodna z wzorem zdarzeń standardem .NET
- 6. string.join - "nie można przekonwertować z IEnumerable ciąg []"
- 7. Konwersja podobieństwa do IEnumerable
- 8. C# Nie można przekonwertować z IEnumerable <Base> do IEnumerable <Derived>
- 9. Jak przekonwertować IEnumerable <T> na ciąg, rekursywnie?
- 10. IEnumerable ciąg
- 11. Konwersja metody asynchronicznej wrócić IObservable <>
- 12. IEnumerable do IReadOnlyCollection
- 13. Konwersja tablicy do IEnumerable <T>
- 14. Wdrażanie IEnumerable do mojego obiektu
- 15. Jak sprawdzić, czy `IEnumerable <T1>` covariant do `IEnumerable <T2>`?
- 16. IEnumerable <IEnumerable <T>> do IEnumerable <T> użyciu LINQ
- 17. Przekazywanie parametru IEnumerable do WebAPI
- 18. Jak utworzyć singleton IEnumerable?
- 19. Jak sortować IEnumerable List?
- 20. konwersji na typ IEnumerable interfejsu
- 21. Jak używać IObservable/IObserver z ConcurrentQueue lub ConcurrentStack
- 22. C# LINQ - nie można niejawnie przekonwertować IEnumerable <string> do listy <string>
- 23. Konwersja z IEnumerable na listę
- 24. Jak przekonwertować ciąg do kontroli?
- 25. Jak przekonwertować requests.cookiejar do qnetworkcookiejar?
- 26. Jak przekonwertować QString do int?
- 27. Jak przekonwertować listę do JavaRDD
- 28. Jak przekonwertować słownik do tablicy
- 29. Jak przekonwertować InputStream do FileInputStream
- 30. Jak przekonwertować NSArray do NSMutableArray
Dlaczego nie chcesz używać 'ToObservable()'? –
@DanielHilgarth Przyznaję, jestem również ciekawy - to jest punkt 'ToObservable()' – JerKimball