Skip to content

Commit e1679eb

Browse files
committed
ISubject interface covered.
1 parent 1b873f9 commit e1679eb

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

Advanced-C#-Programming/21_IObservable-IObserver/21_IObservable-IObserver.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@
88
<Nullable>enable</Nullable>
99
</PropertyGroup>
1010

11+
<ItemGroup>
12+
<PackageReference Include="System.Reactive" Version="6.0.1" />
13+
</ItemGroup>
14+
1115
</Project>

Advanced-C#-Programming/21_IObservable-IObserver/Program.cs

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
Console.WriteLine();
1+
using System.Reactive;
2+
using System.Reactive.Subjects;
23

3-
#region Practice 1
4+
Console.WriteLine();
45

6+
#region Practice 1
7+
/*
58
MyObservable observable = new();
69
710
using var sub1 = observable.Subscribe(new MyObserver("1"));
@@ -58,5 +61,52 @@ public void OnNext(int value)
5861
Console.WriteLine($"{observerName} Value: {value}");
5962
}
6063
}
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+
61111

62112
#endregion

0 commit comments

Comments
 (0)