Хорошо, вопрос структуры кода:
Скажем, у меня есть класс FruitManager, который периодически получает Fruit объекты из некоторого источника данных. У меня также есть некоторые другие классы, которые необходимо получать, когда эти объекты Fruit будут получены. Тем не менее, каждый класс интересуется только некоторыми видами фруктов, и каждый плод имеет другую логику того, как его следует обрабатывать. Скажем, например, класс CitrusLogic имеет методы OnFruitReceived(Orange o) и OnFruitReceived(Lemon l), которые следует вызывать, когда получен соответствующий подтип плода, но его не нужно уведомлять о других плодах.
Есть ли способ элегантно справиться с этим в С# (предположительно с событиями или делегатами)? Очевидно, я мог бы просто добавить общие OnFruitReceived(Fruit f) обработчики событий и использовать инструкции if для фильтрации нежелательных подклассов, но это кажется неэлегантным. Кто-нибудь имеет лучшую идею? Спасибо!
Изменить. Я нашел общих делегатов, и похоже, что они могут быть хорошим решением. Это звучит как хорошее направление?