Событие пожара, когда свойство или переменная изменяют значение

Я хочу добавить больше функциональности в мой проект, который использует ряд классов, упакованных в NET Framework. Эти же классы предоставляют ряд свойств, которые могут быть весьма полезны для адаптации функциональности моего проекта, однако в этих классах не хватает событий.

Если бы у каждого свойства было соответствующее событие, которое сработало бы при изменении значения такого свойства, я мог бы тогда назначить обработчик события, который будет действовать на основе значения этих свойств.

Я сделал пример ниже, чтобы проиллюстрировать мою цель самым простым способом, который я мог придумать.

Sample case:

The System.Net.Sockets.Socket class (Socket on MSDN Docs) has a property named Connected that basically returns true if the socket is connected to a specified end point otherwise returns false.

What I would like to accomplish is simple. I would like to keep this property under "watch" and when the value of it changes, fire a event.

Делать это в одном из моих собственных классов было бы просто, хотя немного утомительно, используяИнтерфейс INotifyPropertyChangedПросто потому, что мой код всегда изменял значение свойства, мне приходилось запускать событие вручную. К сожалению, насколько мне известно, даже такая процедура не может быть применена к существующимSocket класс распространяется внутри NET Framework.

Что ж, этот вопрос становится довольно обширным, извините, но я надеюсь, что он дал представление о моей цели.

Проще говоря, я хочу посмотретьConnected собственностьSocket класс и когда значение его меняется, запустить событие. И если бы можно было также использовать такой подход для наблюдения за переменными и свойствами, это было бы здорово, не только для меня, но и для всех, кто сталкивается с этим вопросом в SO.

Конечно, предпочтителен простой и легкий подход, но больше всего я хочу понять, как это можно сделать, поэтому в будущем я смогу применить его в массовом масштабе к другим классам.

Я понимаю, что спрашиваю много. Большое спасибо.

Any questions just ask.

Ответы на вопрос(2)

Ваш ответ на вопрос