-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathEventSample.cs
53 lines (49 loc) · 2.11 KB
/
EventSample.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
namespace Chapter09;
internal static class EventSample
{
public static void Run()
{
/*
StockService nesne örneğine(stockService), StockLevelChanged isimli event yüklenir.
Bu += operatörü ile yapılabilir.
Bu event gerçekleştiğinde StockService_StockLevelChanged isimli metot çağrılacaktır.
*/
var stockServiceLondon = new StockService
{
Owner = "London"
};
var stockServiceNewYork = new StockService
{
Owner = "New York"
};
/*
İstersek birden fazla nesneyi aynı event method'a yönlendirebiliriz.
Aşağıdaki örnekte stockServiceLondon ve stockServiceNewyork nesne örneklerinin
aynı StockLevelChanged event metoduna bağlandığını görebiliriz.
Event method'un ilk parametresi (object sender) ile de olayın sahibi olan nesneyi anlayabiliriz?
*/
stockServiceLondon.StockLevelChanged += StockService_StockLevelChanged;
stockServiceNewYork.StockLevelChanged += StockService_StockLevelChanged;
stockServiceLondon.Level = 90; // Burada event tetiklenir.
stockServiceLondon.Level -= 5;
stockServiceNewYork.Level = 45;
}
// Event Method
private static void StockService_StockLevelChanged(object? sender, StockLevelChangedEventArgs args)
{
/*
Bu event metoda stok seviyesi değişmeden önceki stok seviyesi ile değiştikten sonraki stok seviyesi
bilgilerini taşımak istiyorum. Nasıl taşırsınız?
Bunun için StockLevelChangedEventArgs isimli sınıfı kullanıyoruz.
Aşağıdaki gibi event'i tetikleyen nesne örneğinin cast ederek yakalayabiliriz.
*/
if (sender is StockService eventOwner)
{
Console.WriteLine($"{eventOwner.Owner}. Stok seviyesinin eski değeri {args.OldLevel}. Değişim {args.Change}");
}
else
{
Console.WriteLine($"Stok seviyesinin eski değeri {args.OldLevel}. Değişim {args.Change}");
}
}
}