Почему вам нужны частичные методы в С#? Можно ли использовать события для достижения одной и той же цели?

Я читал книгу "Apress Pro LINQ: Language Integrated Query in С#", и я наткнулся на частичные методы, но я действительно не понимаю, в чем их нужда.

Я думаю, что примеры из книги (свойства до и после изменения) могут быть реализованы с использованием событий. Итак, любое объяснение?

Ответ 1

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

Однако есть преимущества для частичных методов над событиями в частности

  • Частичные вызовы методов полностью удаляются из сгенерированного ИЛ, если нет реализации. Это невозможно сделать с событиями.
  • Дизайн частичных методов - это решение проблемы, в которой есть 1 поставщик крюка и 1 потребитель. События предназначены для моделирования 1 поставщика с N потребителями и имеют накладные расходы, которые поставляются с таким дизайном.
  • Нет вопросов о заказе (кто идет первым). С помощью событий вам необходимо убедиться, что код, который подписывается на событие, запускается до того, как дизайнер сгенерировал код, который вызывает событие. Это не всегда возможно, если разработчик генерирует конструктор. Частичные методы не имеют такой проблемы.

Ответ 2

Они не нужны, но желательны для крупномасштабных приложений. Обширное использование событий приводит к анти-шаблону Smart UI, где бизнес-логика тесно связана с пользовательским интерфейсом, тогда как частичные функции позволяют лучше отделять ваши проблемы.

Ниже приведена ссылка на руководство по программированию MSDN С# по частичным методам. http://msdn.microsoft.com/en-us/library/wa80x488.aspx

Ответ 3

Компилятор удалит вызовы для частичных методов, если нет реализаций. С альтернативой события слушатели должны быть проверены во время выполнения (они также должны быть сохранены и т.д.). Это позволяет частичным методам быть более совершенными, особенно когда есть много потенциальных "событий", и только некоторые из них имеют "слушателей".

Ответ 4

Частичные методы определяются во время компиляции, события во время выполнения. Так что это разные вещи.

Частичные методы были перенесены на изображение, чтобы расширить существующие классы, которые вы не контролируете (часть фреймворка или автоматически сгенерирована)

Надеюсь, что это поможет