Частичные методы в первую очередь полезны для расширения поведения кода, сгенерированного инструментом, без затрат на оценку времени выполнения или на код, видимый пользователю, где такая расширяемость не используется.
Как таковое, их использование целесообразно и поощряется там, где это необходимо, но такие случаи будут относительно редкими для большинства пользователей (которые не пишут инструменты для генерации кода).
Если вы пишете такой инструмент, то следует подумать о том, где люди могут взаимодействовать с потоком вашего сгенерированного кода, и не может ли такое использование быть легко обработано с помощью механизмов, подобных событиям, при достижении запланированных целей производительности и удобства использования. События по сути являются многоадресными, и такая структура может по своей сути противоречить предполагаемому дизайну API. В качестве альтернативы может потребоваться сложное возвращаемое значение или взаимодействие с параметрами ref / out, и, наконец, расширение может быть сложным / хрупким, несмотря на свою полезность, и, таким образом, только частичный разработчик класса может быть в состоянии адекватно справиться с этим. Все эти причины имеют свою нишу, если не являются общими, а частичные методы могут эффективно их решить.
Потребители , реализующие частичные методы, должны использовать их в соответствии с инструкциями, сгенерированными кодом инструмента (если указана точка расширения, и она вам нужна, используйте ее).
Чтобы избежать этого, потому что кто-то чувствует, что эта функция сбивает с толку, было бы плохое использование языка и API, поскольку это явно предполагаемая точка расширения.