File tree Expand file tree Collapse file tree 2 files changed +56
-2
lines changed
Advanced-C#-Programming/21_IObservable-IObserver Expand file tree Collapse file tree 2 files changed +56
-2
lines changed Original file line number Diff line number Diff line change 8
8
<Nullable >enable</Nullable >
9
9
</PropertyGroup >
10
10
11
+ <ItemGroup >
12
+ <PackageReference Include =" System.Reactive" Version =" 6.0.1" />
13
+ </ItemGroup >
14
+
11
15
</Project >
Original file line number Diff line number Diff line change 1
- Console . WriteLine ( ) ;
1
+ using System . Reactive ;
2
+ using System . Reactive . Subjects ;
2
3
3
- #region Practice 1
4
+ Console . WriteLine ( ) ;
4
5
6
+ #region Practice 1
7
+ /*
5
8
MyObservable observable = new();
6
9
7
10
using var sub1 = observable.Subscribe(new MyObserver("1"));
@@ -58,5 +61,52 @@ public void OnNext(int value)
58
61
Console.WriteLine($"{observerName} Value: {value}");
59
62
}
60
63
}
64
+ */
65
+ #endregion
66
+
67
+ #region ISubject
68
+
69
+ ISubject < int > subject = new Subject < int > ( ) ;
70
+
71
+ MyObserver observer1 = new ( "A" ) ;
72
+ MyObserver observer2 = new ( "B" ) ;
73
+ MyObserver observer3 = new ( "C" ) ;
74
+
75
+ var aSub = subject . Subscribe ( observer1 ) ;
76
+ var bSub = subject . Subscribe ( observer2 ) ;
77
+ var cSub = subject . Subscribe ( observer3 ) ;
78
+
79
+ subject . OnNext ( 10 ) ;
80
+
81
+ bSub . Dispose ( ) ;
82
+
83
+ subject . OnNext ( 20 ) ;
84
+ subject . OnNext ( 30 ) ;
85
+
86
+ class MyObserver ( string observerName ) : IObserver < int >
87
+ {
88
+ public void OnCompleted ( )
89
+ {
90
+ Console . WriteLine ( $ "{ observerName } Completed") ;
91
+ }
92
+
93
+ public void OnError ( Exception error )
94
+ {
95
+ Console . WriteLine ( $ "{ observerName } Error: { error . Message } ") ;
96
+ }
97
+
98
+ public void OnNext ( int value )
99
+ {
100
+ Console . WriteLine ( $ "{ observerName } Value: { value } ") ;
101
+ }
102
+ }
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
61
111
62
112
#endregion
You can’t perform that action at this time.
0 commit comments