Как ты можешь использовать делегаты и события в C# чтобы придерживаться принципа открытости/закрытости (OCP) в объектно-ориентированном дизайне? — ДейлиПреп