Zdarzenie pożarowe, gdy właściwość lub zmienna zmienia wartość
Chcę dodać więcej funkcji do projektu, który mam, dzięki czemu można korzystać z wielu klas w pakiecie NET Framework. Te same klasy dostarczają wielu właściwości, które mogą być całkiem przydatne, dostosowując funkcjonalność mojego projektu, jednak jedną z rzeczy, której brakuje w tych klasach, są Zdarzenia.
Gdyby każda właściwość miała odpowiednie zdarzenie, które wyzwoliłoby się za każdym razem, gdy zmieni się wartość takiej właściwości, mógłbym następnie przypisać procedurę obsługi zdarzeń, która działałaby na podstawie tych wartości właściwości.
Zrobiłem przykładowy przykład poniżej, aby zilustrować mój cel w najprostszy sposób.
Przykładowy przypadek:
TheSystem.Net.Sockets.Socket
klasa (Gniazdo w MSDN Docs) ma właściwość o nazwieConnected
który w zasadzie zwraca true, jeśli gniazdo jest podłączone do określonego punktu końcowego, w przeciwnym razie zwraca false.
To, co chciałbym osiągnąć, jest proste. Chciałbym zachować tę właściwość pod hasłem „obserwuj”, a kiedy zmieni się jej wartość, odpal zdarzenie.
Czyniąc to na jednej z moich klas, byłoby to proste, choć trochę męczące za pomocąInterfejs INotifyPropertyChanged, ponieważ zawsze, że mój kod zmienił wartość właściwości, musiałbym uruchomić zdarzenie ręcznie. Niestety, według mojej najlepszej wiedzy, nawet tego rodzaju procedury nie można zastosować do istniejącejSocket
klasa rozproszona w ramach NET Framework.
Cóż, to pytanie staje się dość obszerne, przepraszam, ale mam nadzieję, że dało to wgląd w mój cel.
Teraz, po prostu, chcę to zobaczyćConnected
własnośćSocket
klasa i kiedy wartość się zmienia, odpal zdarzenie. I gdyby można było użyć takiego podejścia do oglądania zmiennych i właściwości, byłoby to niesamowite, nie tylko dla mnie, ale dla każdego, kto natknie się na to pytanie na SO.
Preferowane jest proste i lekkie podejście, ale przede wszystkim chcę zrozumieć, jak można to zrobić, więc w przyszłości mogę zastosować je w skali masowej do innych klas.
Zdaję sobie sprawę, że dużo pytam. Wielkie dzięki.
Wszelkie pytania po prostu zapytaj.