С validateField наверное немного неудачный пример. т.к. изменить возвращаемое значение метода перехватив событие его вызова видимо всё-таки нельзя. И наверное это правильно, иначе были бы конфликты между несколькими "перехватчиками". Да и к тому же перехватывать видимо можно только методы помеченные ключевым словом delegate (это предположение). Кстати, в случае наличия нескольких подписчиков возникает вопрос очерёдности их обработки. Может они вообще параллельно могут выполняться
Так же интересно, каким способом в обработчике события можно получить ссылку на объект у которого это событие произошло? На сколько я понял из примера, входящие параметры обработчика совпадают с входящими параметрами перехватываемого метода. Сработает если переписать метод appleGrew так:
X++:
delegate void appleGrew(int appleId, Apples _this = this)
{
}
?
UPD. Спасибо за ссылку на MSDN многие вопросы отпали
Оказывается и возвращаемое значение можно поменять и даже значения входных параметров. И всё-таки интересно как это всё будет жить в случае нескольких подписчиков?